#!/usr/bin/env python import sys import json from os.path import (basename, dirname) run_ids = [] data = {} for json_file in sys.argv[1:]: with open(json_file) as file: run_id = basename(dirname(json_file)) run_ids.append(run_id) data[run_id] = json.load(file) results = {} for run_id in run_ids: for item in data[run_id]: lib = item[u'test case'].split('-')[0] testcase = item[u'test case'].split('-')[1] avg_time = item[u'average run time (s)'] if testcase not in results.keys(): results[testcase] = {} if run_id not in results[testcase].keys(): results[testcase][run_id] = {} results[testcase][run_id][lib] = avg_time # First header print("%-12s " %('')), for run_id in run_ids: label = run_id.split('-')[1].upper() print(" ==== %-16s ==== " %(label)), print("\n"), # Second header print("%-12s " % 'test case'), for run_id in run_ids: for lib in ['cairo', 'skia']: print(" %-6s " %(lib)), print(" %8s %s" %('ca:sk', ' ')), if len(run_ids) == 2: print(" %8s %8s" %('ca:ca', 'sk:sk')), print("\n"), testcases = results.keys() testcases.sort() for testcase in testcases: print("%-12s " %(testcase)), for run_id in run_ids: cairo_value = results[testcase][run_id]['cairo'] skia_value = results[testcase][run_id]['skia'] improvement = 100*(cairo_value - skia_value)/cairo_value print(" %8f %8f %7.1f%% " %(cairo_value, skia_value, improvement)), if len(run_ids) == 2: ca0 = results[testcase][run_ids[0]]['cairo'] ca1 = results[testcase][run_ids[1]]['cairo'] sk0 = results[testcase][run_ids[0]]['skia'] sk1 = results[testcase][run_ids[1]]['skia'] if ca0 == 0: ca_ca_improvement = 0 else: ca_ca_improvement = 100*(ca0 - ca1)/ca0 if sk0 == 0: sk_sk_improvement = 0 else: sk_sk_improvement = 100*(sk0 - sk1)/sk0 print(" %7.1f%% %7.1f%%" %(ca_ca_improvement, sk_sk_improvement)), print("\n"),