Author: David Schneider <[email protected]>
Branch: extradoc
Changeset: r4486:6ee6eb13d8bb
Date: 2012-08-09 11:32 +0200
http://bitbucket.org/pypy/extradoc/changeset/6ee6eb13d8bb/
Log: Add a table showing the percentage of guards that ever fail and the
percentage of guards that fail more than 200 times
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 figures/guard_table.tex
figures/resume_data_table.tex
+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
figures/resume_data_table.tex figures/failing_guards_table.tex
pdflatex paper
bibtex paper
pdflatex paper
@@ -18,7 +18,7 @@
%.tex: %.py
pygmentize -l python -o $@ $<
-figures/%_table.tex: tool/build_tables.py logs/backend_summary.csv
logs/summary.csv tool/table_template.tex logs/bridge_summary.csv
logs/resume_summary.csv
+figures/%_table.tex: tool/build_tables.py logs/backend_summary.csv
logs/summary.csv tool/table_template.tex logs/bridge_summary.csv
logs/resume_summary.csv logs/guard_summary.json
tool/setup.sh
paper_env/bin/python tool/build_tables.py $@
diff --git a/talk/vmil2012/paper.tex b/talk/vmil2012/paper.tex
--- a/talk/vmil2012/paper.tex
+++ b/talk/vmil2012/paper.tex
@@ -632,6 +632,13 @@
\label{fig:resume_data_sizes}
\end{figure}
+\begin{figure}
+ \include{figures/failing_guards_table}
+ \caption{Failing guards}
+ \label{fig:failing_guards}
+\end{figure}
+
+
\todo{figure about failure counts of guards (histogram?)}
\todo{add resume data sizes without sharing}
\todo{add a footnote about why guards have a threshold of 100}
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
@@ -1,9 +1,10 @@
from __future__ import division
import csv
import django
-from django.template import Template, Context
+import json
import os
import sys
+from django.template import Template, Context
# This line is required for Django configuration
django.conf.settings.configure()
@@ -15,6 +16,33 @@
return [l for l in reader]
+def build_failing_guards_table(files, texfile, template):
+ BRIDGE_THRESHOLD = 200
+ assert len(files) == 2
+ with open(files[1]) as f:
+ failures = json.load(f)
+ for l in getlines(files[0]):
+ failures[l['bench']]['nguards'] = float(l['number of guards'])
+
+ table = []
+ head = ['Benchmark',
+ 'failing guards',
+ 'over %d failures' % BRIDGE_THRESHOLD]
+
+ for bench, info in failures.iteritems():
+ total = failures[bench]['nguards']
+ total_failures = len(info['results'])
+ bridges = len([k for k,v in info['results'].iteritems() \
+ if v > BRIDGE_THRESHOLD])
+ res = [bench.replace('_', '\\_'),
+ "%.2f \\%%" % (100 * total_failures/total),
+ "%.2f \\%%" % (100 * bridges/total),
+ ]
+ table.append(res)
+ output = render_table(template, head, sorted(table))
+ write_table(output, texfile)
+
+
def build_resume_data_table(csvfiles, texfile, template):
assert len(csvfiles) == 1
lines = getlines(csvfiles[0])
@@ -82,6 +110,7 @@
assert len(csvfiles) == 2
lines = getlines(csvfiles[0])
bridge_lines = getlines(csvfiles[1])
+ # keep this around for the assertion bellow
bridgedata = {}
for l in bridge_lines:
bridgedata[l['bench']] = l
@@ -178,6 +207,8 @@
(['summary.csv'], build_guard_table),
'resume_data_table.tex':
(['resume_summary.csv'], build_resume_data_table),
+ 'failing_guards_table.tex':
+ (['resume_summary.csv', 'guard_summary.json'],
build_failing_guards_table),
}
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit