[pypy-svn] r60172 - pypy/build/benchmem
xoraxax at codespeak.net
xoraxax at codespeak.net
Thu Nov 27 00:03:34 CET 2008
Author: xoraxax
Date: Thu Nov 27 00:03:34 2008
New Revision: 60172
Modified:
pypy/build/benchmem/report.py
Log:
Generate smaller appprofiles table, rename share to sharable.
Modified: pypy/build/benchmem/report.py
==============================================================================
--- pypy/build/benchmem/report.py (original)
+++ pypy/build/benchmem/report.py Thu Nov 27 00:03:34 2008
@@ -279,7 +279,7 @@
# result.snapshot.filter(group=result.executable, kind=self.DATA).rss)
# static data that is not shared with another process and was not modified by the process
# can be easily shared with another process
- makerow("IP-DATA share", lambda result:
+ makerow("IP-DATA sharable", lambda result:
result.snapshot.filter(group=result.executable, kind=self.DATA).shared_clean +
result.snapshot.filter(group=result.executable, kind=self.DATA).private_clean)
#makerow("IP-DATA-private_clean", lambda result:
@@ -427,24 +427,16 @@
self.full_resultset = resultset
super(Appprofiles, self).__init__(resultset)
- def getexecutables(self):
- l = []
- for r in self.resultset.results:
- executable = r.executable_short
- if executable not in l:
- l.append(executable)
- return l
-
def run_text(self):
tw = py.io.TerminalWriter()
tw.sep("=", "Appprofiles memory sampling")
- rows = self.generate_table()
+ rows = self.generate_large_table()
tw.line(asciitable(rows))
def run_rest(self, filename="table-appprofiles.txt"):
p = py.path.local(filename)
- rows = self.generate_table(True)
- p.write(ReSTtable("Application Benchmarks", rows))
+ rows = self.generate_table()
+ p.write(ReSTtable("Application Benchmarks: Average and Maximum heap + dirty static data size", rows))
print "wrote", p
@@ -455,11 +447,26 @@
plotter.plot_appprofiles(name2result, snapshots)
plotter.plot_appprofiles(name2result, totals)
- def generate_table(self, rest_table=False):
- executables = self.getexecutables()
+ def generate_table(self):
+ executables = self.getexecutables(unique=True, short=True)
+ row0 = ["benchmark"] + [str(x) for x in executables]
+ rows = [row0]
+ name2results = self.resultset.getname2results()
+ name2results.sort()
+
+ for name, results in name2results:
+ row = [name]
+ for executable, result in zip(executables, results):
+ assert result.executable_short == executable, "ordering assumtion"
+ row.append("%.2f/**%s**" % (result.avg, result.max))
+ rows.append(row)
+ return rows
+
+
+ def generate_large_table(self):
+ executables = self.getexecutables(short=True)
row0 = "interpreter benchmark duration #snapshots heapdata_min heapdata_avg heapdata_max"
- if not rest_table:
- row0 += "dirtyd_min dirtyd_avg dirtyd_max min_data avg_data max_data code_min code_avg code_max"
+ row0 += "dirtyd_min dirtyd_avg dirtyd_max min_data avg_data max_data code_min code_avg code_max"
row0 = row0.split()
rows = [row0]
names = []
@@ -468,12 +475,11 @@
names.append(result.benchname)
stats = {}
attrs = ["min", "avg", "max"]
- if not rest_table:
- attrs.extend([
- "min_dirtied_data", "avg_dirtied_data", "max_dirtied_data",
- "min_data", "avg_data", "max_data",
- "min_code", "avg_code", "max_code",
- ])
+ attrs.extend([
+ "min_dirtied_data", "avg_dirtied_data", "max_dirtied_data",
+ "min_data", "avg_data", "max_data",
+ "min_code", "avg_code", "max_code",
+ ])
for name in names:
for result in self.resultset.results:
if name == result.benchname:
@@ -496,19 +502,19 @@
row.append(data_str)
rows.append(row)
- if not rest_table:
- for executable in executables:
- for kind in (min, max):
- kindname = kind.__name__
- key = (executable, kind.__name__)
- row = [executable, kindname, "-", "-"]
- for attr in attrs:
- data = stats[key][attr]
- data_str = str(data)
- if "avg" in attr:
- data_str = "%.2f" % data
- row.append(data_str)
- rows.append(row)
+ # calculate min/max of every (interpreter, column) pair
+ for executable in executables:
+ for kind in (min, max):
+ kindname = kind.__name__
+ key = (executable, kind.__name__)
+ row = [executable, kindname, "-", "-"]
+ for attr in attrs:
+ data = stats[key][attr]
+ data_str = str(data)
+ if "avg" in attr:
+ data_str = "%.2f" % data
+ row.append(data_str)
+ rows.append(row)
return rows
More information about the Pypy-commit
mailing list