[pypy-svn] r58425 - pypy/build/benchmem
hpk at codespeak.net
hpk at codespeak.net
Thu Sep 25 12:18:51 CEST 2008
Author: hpk
Date: Thu Sep 25 12:18:51 2008
New Revision: 58425
Modified:
pypy/build/benchmem/report.py
Log:
unscramble code a bit (but gnuplot still doesnt produce results for me)
Modified: pypy/build/benchmem/report.py
==============================================================================
--- pypy/build/benchmem/report.py (original)
+++ pypy/build/benchmem/report.py Thu Sep 25 12:18:51 2008
@@ -42,54 +42,66 @@
])
tw.line(asciitable(rows))
-def _process_rows(reader, starthook, endhook):
- for name, results in reader.name2results.items():
- starthook(name)
- row0 = ["num"] + [result.executable for result in results]
-
- numsnapshosts = len(results[0].snapshots)
- rows = [row0]
- for i in range(numsnapshosts):
- row = [i]
- for result in results:
- row.append(result.snapshots[i].private)
- rows.append(row)
- endhook(rows)
-
-def checkpointdetails(reader):
- tw = py.io.TerminalWriter()
- def starthook(name):
- tw.sep("=", "private RSS at checkpoints: %s" %(name,))
- _process_rows(reader, starthook, lambda rows: tw.line(asciitable(rows)))
-
-def gnuplot_output(reader):
- output = []
- pythons = []
-
- def endhook(rows):
- if not pythons:
- pythons.extend(rows[0][1:])
- output.append(rows[2][1:])
-
- _process_rows(reader, lambda name : None, endhook)
- runbench.mydir.join("gnuplotdata").write(
- "\n".join([" ".join([str(j) for j in i]) for i in output]))
-
- def new_cmd(num, name):
- s = ("plot 'gnuplotdata' using ($%d) with histograms title '%s'" %
- (num + 1,name))
- if num > 0:
- s = "re" + s
- return s
-
- plotcmds = "\n".join([new_cmd(i, name) for i, name in enumerate(pythons)])
- runbench.mydir.join("gnuplotcmd").write(
- """set terminal postscript color
- set output 'output.ps'
- %s
- """ % plotcmds
- )
- os.system("gnuplot gnuplotcmd")
+class TableReporter:
+ def __init__(self, reader):
+ self.reader = reader
+
+ begin = report = end = lambda x: None # hooks
+
+ def run(self):
+ self.begin()
+ for name, results in reader.name2results.items():
+ row0 = ["num"] + [result.executable for result in results]
+ numsnapshosts = len(results[0].snapshots)
+ rows = [row0]
+ for i in range(numsnapshosts):
+ row = [i]
+ for result in results:
+ row.append(result.snapshots[i].private)
+ rows.append(row)
+ self.report(name, rows)
+ self.end()
+
+class CheckpointDetails(TableReporter):
+ def begin(self):
+ self.tw = py.io.TerminalWriter()
+
+ def report(self, name, rows):
+ self.tw.sep("=", "private RSS at checkpoints: %s" %(name,))
+ self.tw.line(asciitable(rows))
+
+class Gnuplot(TableReporter):
+ def begin(self):
+ self.output = []
+ self.pythons = []
+
+ def report(self, name, rows):
+ if not self.pythons:
+ self.pythons.extend(rows[0][1:])
+ self.output.append(rows[2][1:])
+
+ def end(self):
+ pythons = self.pythons
+ output = self.output
+
+ runbench.mydir.join("gnuplotdata").write(
+ "\n".join([" ".join([str(j) for j in i]) for i in output]))
+
+ def new_cmd(num, name):
+ s = ("plot 'gnuplotdata' using ($%d) with histograms title '%s'" %
+ (num + 1,name))
+ if num > 0:
+ s = "re" + s
+ return s
+
+ plotcmds = "\n".join([new_cmd(i, name) for i, name in enumerate(pythons)])
+ runbench.mydir.join("gnuplotcmd").write(
+ """set terminal postscript color
+ set output 'output.ps'
+ %s
+ """ % plotcmds
+ )
+ os.system("gnuplot gnuplotcmd")
if __name__ == "__main__":
options, args = parser.parse_args()
@@ -99,8 +111,8 @@
reader.parse(benchlog)
#maxtable_overview(reader)
- checkpointdetails(reader)
- gnuplot_output(reader)
+ CheckpointDetails(reader).run()
+ Gnuplot(reader).run()
#for name, results in reader.name2results.items():
# tw.sep("=", name)
More information about the Pypy-commit
mailing list