add scripts and key
[tsan11-tsan11rec-docker.git] / scripts / calculator.py
1 #!/bin/python
2 import re
3 import statistics
4 import sys
5
6 def GdaxStatistics(filename):
7     gdax_data = []
8     with open(filename, 'r') as f:
9         content = f.read()
10         allruns = re.findall(r'(0-0\.49.*?19.99 s: \d+)', content, flags=re.DOTALL)
11         for run in allruns:
12             iterations = 0
13             for entry in run.split('\n'):
14                 if entry:
15                     (_, count) = entry.split(': ')
16                     iterations += int(count)
17
18             gdax_data.append(iterations)
19
20     return gdax_data
21
22 def SiloStatistics(filename):
23     data = []
24     with open(filename, 'r') as f:
25         content = f.read()
26         allruns = re.findall(r'agg_throughput: (\d+\.?\d*) ops', content)
27         data = [float(x) for x in allruns]
28
29     return data
30
31 def TimeStatistics(filename):
32     data = []
33     with open(filename, 'r') as f:
34         content = f.read()
35         allruns = re.findall(r'real.*?(\d+)m(\d+\.\d+)s', content)
36         for run in allruns:
37             (minute,second) = run
38             time = int(minute) * 60 + float(second)
39             data.append(time)
40
41     return data
42
43 def JsbenchStatistics(filename):
44      with open(filename, 'r') as f:
45         content = f.read()
46         result = re.search(r'(Final results.*?runs)', content, flags=re.DOTALL)
47         print(result.group(0))
48
49 def printData(data):
50     str_data = [str(x) for x in data]
51     print 'raw data:', ', '.join(str_data)
52     print 'mean:', statistics.mean(data)
53     print 'stddev:', statistics.stdev(data)
54     print ''
55
56 if __name__ == "__main__":
57     base = '.'
58     if len(sys.argv) == 2:
59         base = sys.argv[1]
60
61     print 'Silo measurement: agg_throughput, unit: ops/sec'
62     printData(SiloStatistics( base + '/silo.log'))
63
64     print 'Gdax measurement: number of iterations'
65     printData(GdaxStatistics( base + '/gdax.log'))
66
67     print 'Iris measurement: real time unit: seccond'
68     printData(TimeStatistics( base + '/iris.log'))
69
70     print 'Mabain measurement: real time, unit: second'
71     printData(TimeStatistics( base + '/mabain.log'))
72
73     print 'Jsbench results:'
74     JsbenchStatistics( base + '/jsbench.log');