[pypy-commit] extradoc extradoc: generate a table showing only the percentage of guards before and after optimization for the set of benchmarks
bivab
noreply at buildbot.pypy.org
Wed Aug 1 18:15:52 CEST 2012
Author: David Schneider <david.schneider at picle.org>
Branch: extradoc
Changeset: r4401:97526b6a35cf
Date: 2012-08-01 18:15 +0200
http://bitbucket.org/pypy/extradoc/changeset/97526b6a35cf/
Log: generate a table showing only the percentage of guards before and
after optimization for the set of benchmarks
diff --git a/talk/vmil2012/Makefile b/talk/vmil2012/Makefile
--- a/talk/vmil2012/Makefile
+++ b/talk/vmil2012/Makefile
@@ -1,5 +1,5 @@
-jit-guards.pdf: paper.tex paper.bib figures/log.tex figures/example.tex figures/benchmarks_table.tex figures/backend_table.tex figures/ops_count_table.tex figures/loop_bridge.pdf
+jit-guards.pdf: paper.tex paper.bib figures/log.tex figures/example.tex figures/benchmarks_table.tex figures/backend_table.tex figures/ops_count_table.tex figures/loop_bridge.pdf figures/guard_table.tex
pdflatex paper
bibtex paper
pdflatex paper
diff --git a/talk/vmil2012/paper.tex b/talk/vmil2012/paper.tex
--- a/talk/vmil2012/paper.tex
+++ b/talk/vmil2012/paper.tex
@@ -109,12 +109,12 @@
intermediate and low-level representation of the JIT instructions and how these
are implemented.
-\begin{figure*}
- \include{figures/ops_count_table}
- \caption{Relative numbers of operations in the traces generated for
- different benchmarks}
- \label{fig:ops_count}
-\end{figure*}
+%\begin{figure*}
+% \include{figures/ops_count_table}
+% \caption{Relative numbers of operations in the traces generated for
+% different benchmarks}
+% \label{fig:ops_count}
+%\end{figure*}
Although there are several publications about tracing just-in-time compilers, to
our knowledge, there are none that describe the use and implementation of
guards in this context. With the following contributions we aim to shed some
@@ -141,6 +141,11 @@
In this paper we want to substantiate the aforementioned and describe based on
them the reasoning behind and the implementation of guards in PyPy's tracing
just-in-time compiler.
+\begin{figure}
+ \include{figures/guard_table}
+ \caption{Percentage of guards before and after optimization for different benchmarks}
+ \label{fig:guard_percent}
+\end{figure}
\begin{itemize}
\item An analysis of guards in the context of PyPy's tracing JIT to
substantiate the aforementioned observation, based on a set of benchmarks.
diff --git a/talk/vmil2012/tool/build_tables.py b/talk/vmil2012/tool/build_tables.py
--- a/talk/vmil2012/tool/build_tables.py
+++ b/talk/vmil2012/tool/build_tables.py
@@ -41,6 +41,25 @@
output = render_table(template, head, sorted(table))
write_table(output, texfile)
+def build_guard_table(csvfiles, texfile, template):
+ assert len(csvfiles) == 1
+ lines = getlines(csvfiles[0])
+ table = []
+ head = ['Benchmark', 'guards b/o in \%', 'guards a/o in \%']
+
+ keys = 'numeric set get rest new guard '.split()
+ for bench in lines:
+ ops = {'before': sum(int(bench['%s before' % s]) for s in keys),
+ 'after': sum(int(bench['%s after' % s]) for s in keys)}
+
+ res = [bench['bench'].replace('_', '\\_'),]
+ for t in ('before', 'after'):
+ o = int(bench['guard %s' % t])
+ res.append('%.2f ' % (o / ops[t] * 100))
+ table.append(res)
+ output = render_table(template, head, sorted(table))
+ write_table(output, texfile)
+
def build_benchmarks_table(csvfiles, texfile, template):
@@ -140,6 +159,8 @@
(['backend_summary.csv', 'resume_summary.csv'], build_backend_count_table),
'ops_count_table.tex':
(['summary.csv'], build_ops_count_table),
+ 'guard_table.tex':
+ (['summary.csv'], build_guard_table),
}
More information about the pypy-commit
mailing list