130b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier#!/usr/bin/env python 230b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier""" 330b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiseliercompare_bench.py - Compare two benchmarks or their results and report the 430b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier difference. 530b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier""" 630b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselierimport sys 730b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselierimport gbench 830b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselierfrom gbench import util, report 930b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier 1030b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselierdef main(): 1130b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier # Parse the command line flags 1230b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier def usage(): 1330b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier print('compare_bench.py <test1> <test2> [benchmark options]...') 1430b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier exit(1) 1530b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier if '--help' in sys.argv or len(sys.argv) < 3: 1630b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier usage() 1730b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier tests = sys.argv[1:3] 1830b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier bench_opts = sys.argv[3:] 1930b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier bench_opts = list(bench_opts) 2030b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier # Run the benchmarks and report the results 2130b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier json1 = gbench.util.run_or_load_benchmark(tests[0], bench_opts) 2230b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier json2 = gbench.util.run_or_load_benchmark(tests[1], bench_opts) 2330b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier output_lines = gbench.report.generate_difference_report(json1, json2) 2430b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier print 'Comparing %s to %s' % (tests[0], tests[1]) 2530b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier for ln in output_lines: 2630b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier print(ln) 2730b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier 2830b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier 2930b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselierif __name__ == '__main__': 3030b48cb1b3a0c4fcc1887259bd215ad8738d21b4Eric Fiselier main() 31