Index: bench/bench_compare.py |
diff --git a/bench/bench_compare.py b/bench/bench_compare.py |
deleted file mode 100755 |
index f4f773442e7fa149173ed6016a42be021f7f9aaf..0000000000000000000000000000000000000000 |
--- a/bench/bench_compare.py |
+++ /dev/null |
@@ -1,193 +0,0 @@ |
-#!/usr/bin/env python |
-''' |
-Created on May 16, 2011 |
- |
-@author: bungeman |
-''' |
-import sys |
-import getopt |
-import bench_util |
- |
-def usage(): |
- """Prints simple usage information.""" |
- |
- print '-o <file> the old bench output file.' |
- print '-n <file> the new bench output file.' |
- print '-h causes headers to be output.' |
- print '-s <stat> the type of statistical analysis used' |
- print ' Not specifying is the same as -s "avg".' |
- print ' avg: average of all data points' |
- print ' min: minimum of all data points' |
- print ' med: median of all data points' |
- print ' 25th: twenty-fifth percentile for all data points' |
- print '-f <fieldSpec> which fields to output and in what order.' |
- print ' Not specifying is the same as -f "bctondp".' |
- print ' b: bench' |
- print ' c: config' |
- print ' t: time type' |
- print ' o: old time' |
- print ' n: new time' |
- print ' d: diff' |
- print ' p: percent diff' |
- print '-t use tab delimited format for output.' |
- print '--match <bench> only matches benches which begin with <bench>.' |
- |
-class BenchDiff: |
- """A compare between data points produced by bench. |
- |
- (BenchDataPoint, BenchDataPoint)""" |
- def __init__(self, old, new): |
- self.old = old |
- self.new = new |
- self.diff = old.time - new.time |
- diffp = 0 |
- if old.time != 0: |
- diffp = self.diff / old.time |
- self.diffp = diffp |
- |
- def __repr__(self): |
- return "BenchDiff(%s, %s)" % ( |
- str(self.new), |
- str(self.old), |
- ) |
- |
-def main(): |
- """Parses command line and writes output.""" |
- |
- try: |
- opts, _ = getopt.getopt(sys.argv[1:], "f:o:n:s:ht", ['match=']) |
- except getopt.GetoptError, err: |
- print str(err) |
- usage() |
- sys.exit(2) |
- |
- old = None |
- new = None |
- column_format = "" |
- header_format = "" |
- columns = 'bctondp' |
- header = False |
- stat_type = "avg" |
- use_tabs = False |
- match_bench = None; |
- |
- for option, value in opts: |
- if option == "-o": |
- old = value |
- elif option == "-n": |
- new = value |
- elif option == "-h": |
- header = True |
- elif option == "-f": |
- columns = value |
- elif option == "-s": |
- stat_type = value |
- elif option == "-t": |
- use_tabs = True |
- elif option == "--match": |
- match_bench = value |
- else: |
- usage() |
- assert False, "unhandled option" |
- |
- if old is None or new is None: |
- usage() |
- sys.exit(2) |
- |
- old_benches = bench_util.parse({}, open(old, 'r'), stat_type) |
- new_benches = bench_util.parse({}, open(new, 'r'), stat_type) |
- |
- bench_diffs = [] |
- for old_bench in old_benches: |
- #filter benches by the match criteria |
- if match_bench and not old_bench.bench.startswith(match_bench): |
- continue |
- |
- #filter new_benches for benches that match old_bench |
- new_bench_match = [bench for bench in new_benches |
- if old_bench.bench == bench.bench and |
- old_bench.config == bench.config and |
- old_bench.time_type == bench.time_type |
- ] |
- if (len(new_bench_match) < 1): |
- continue |
- bench_diffs.append(BenchDiff(old_bench, new_bench_match[0])) |
- |
- if use_tabs: |
- column_formats = { |
- 'b' : '{bench}\t', |
- 'c' : '{config}\t', |
- 't' : '{time_type}\t', |
- 'o' : '{old_time: 0.2f}\t', |
- 'n' : '{new_time: 0.2f}\t', |
- 'd' : '{diff: 0.2f}\t', |
- 'p' : '{diffp: 0.1%}\t', |
- } |
- header_formats = { |
- 'b' : '{bench}\t', |
- 'c' : '{config}\t', |
- 't' : '{time_type}\t', |
- 'o' : '{old_time}\t', |
- 'n' : '{new_time}\t', |
- 'd' : '{diff}\t', |
- 'p' : '{diffp}\t', |
- } |
- else: |
- bench_max_len = max(map(lambda b: len(b.old.bench), bench_diffs)) |
- config_max_len = max(map(lambda b: len(b.old.config), bench_diffs)) |
- column_formats = { |
- 'b' : '{bench: >%d} ' % (bench_max_len), |
- 'c' : '{config: <%d} ' % (config_max_len), |
- 't' : '{time_type: <4} ', |
- 'o' : '{old_time: >10.2f} ', |
- 'n' : '{new_time: >10.2f} ', |
- 'd' : '{diff: >+10.2f} ', |
- 'p' : '{diffp: >+8.1%} ', |
- } |
- header_formats = { |
- 'b' : '{bench: >%d} ' % (bench_max_len), |
- 'c' : '{config: <%d} ' % (config_max_len), |
- 't' : '{time_type: <4} ', |
- 'o' : '{old_time: >10} ', |
- 'n' : '{new_time: >10} ', |
- 'd' : '{diff: >10} ', |
- 'p' : '{diffp: >8} ', |
- } |
- |
- for column_char in columns: |
- if column_formats[column_char]: |
- column_format += column_formats[column_char] |
- header_format += header_formats[column_char] |
- else: |
- usage() |
- sys.exit(2) |
- |
- if header: |
- print header_format.format( |
- bench='bench' |
- , config='conf' |
- , time_type='time' |
- , old_time='old' |
- , new_time='new' |
- , diff='diff' |
- , diffp='diffP' |
- ) |
- |
- bench_diffs.sort(key=lambda d : [d.diffp, |
- d.old.bench, |
- d.old.config, |
- d.old.time_type, |
- ]) |
- for bench_diff in bench_diffs: |
- print column_format.format( |
- bench=bench_diff.old.bench.strip() |
- , config=bench_diff.old.config.strip() |
- , time_type=bench_diff.old.time_type |
- , old_time=bench_diff.old.time |
- , new_time=bench_diff.new.time |
- , diff=bench_diff.diff |
- , diffp=bench_diff.diffp |
- ) |
- |
-if __name__ == "__main__": |
- main() |