summaryrefslogtreecommitdiff
path: root/benchmarks/getgraphs.py
blob: aacf6b2d19c662b362b1e03a03b84017b7ee19b7 (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

import sys

benchmarks = {}
color_map = {'proto2_compiled': 'FF0000',
             'proto2_table': 'FF00FF',
             'upb_table_byref': '0000FF',
             'upb_table_byval': '00FF00'}
for line in sys.stdin:
  name, val = line.split(': ')
  components = name.split('_')
  benchmark = '_'.join(components[1:3])
  variant = '_'.join(components[3:])
  if benchmark not in benchmarks:
    benchmarks[benchmark] = []
  benchmarks[benchmark].append((variant, int(val)))

def encode(x):
  digits = (range(ord("A"), ord("Z")+1) + range(ord("a"), ord("z")+1) +
            range(ord("0"), ord("9")+1) + [ord("."), ord("-")])
  return chr(digits[x / 64]) + chr(digits[x % 64])

for benchmark, values in benchmarks.items():
  def cmp(a, b):
    return b[1] - a[1]
  values.sort(cmp)
  variants = [x[0] for x in values]
  values = [x[1] for x in values]
  scaling = 400
  encoded_values = [encode((x * 4096 / scaling) - 1) for x in values]
  legend = "chdl=%s" % ("|".join(variants))
  colors = "chco=%s" % ("|".join([color_map[x] for x in variants]))
  data = "chd=e:%s" % ("".join(encoded_values))
  url = "http://chart.apis.google.com/chart?cht=bhs&chs=500x200&chtt=%s+(MB/s)&chxt=x&chxr=0,0,%d&%s" % (benchmark, scaling, "&".join([legend, data, colors]))
  print url
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback