summaryrefslogtreecommitdiffstatsci
path: root/utils/compare_runs
blob: 68e29e2e28cecc55ebe69b465fa640b6d4bcc034 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/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"),