move everything out of trunk
[lttv.git] / masters-pmf / java_speed_test / bench / bench.py
1 import os
2 import stat
3 import time
4
5 runs=10
6
7 class Task:
8 name = "unnamed"
9 pre_cmd = ""
10 cmd = ""
11 post_cmd = ""
12 results = 0
13 remain = 3
14
15 def __init__(self):
16 self.results = []
17
18 def print_extra_details(self):
19 pass
20
21
22 class JavaTestTask(Task):
23 tracefile = ""
24
25 def print_extra_details(self):
26 size = os.stat(self.tracefile)[stat.ST_SIZE]
27 tot_events = size / 22
28 print "Tracefile: %s (%d bytes)" % (self.tracefile,size)
29 print "Events in tracefile: %d" % tot_events
30 print "Rate: " + str(round(float(tot_events) / self.average_run_time, 3)) + " events/s"
31
32
33 tasks = []
34
35 t1 = JavaTestTask()
36 t1.name = "C version (without print)"
37 t1.tracefile = "../trace_long.dat"
38 t1.pre_cmd = ""
39 t1.cmd = "pushd ../c >/dev/null; ./main %s; popd >/dev/null;" % t1.tracefile
40 t1.post_cmd = ""
41 tasks.append(t1)
42
43 t3 = JavaTestTask()
44 t3.name = "C version (with print)"
45 t3.tracefile = "../trace_med.dat"
46 t3.pre_cmd = ""
47 t3.cmd = "pushd ../c >/dev/null; ./main -p %s; popd >/dev/null;" % t3.tracefile
48 t3.post_cmd = ""
49 tasks.append(t3)
50
51 t5 = JavaTestTask()
52 t5.name = "C version (with print, but sent to /dev/null)"
53 t5.tracefile = "../trace_long.dat"
54 t5.pre_cmd = ""
55 t5.cmd = "pushd ../c >/dev/null; ./main -p %s >/dev/null; popd >/dev/null;" % t5.tracefile
56 t5.post_cmd = ""
57 tasks.append(t5)
58
59 t2 = JavaTestTask()
60 t2.name = "Java version (without print)"
61 t2.tracefile = "../trace_long.dat"
62 t2.pre_cmd = ""
63 t2.cmd = "pushd ../java >/dev/null; java read_trace %s; popd >/dev/null;" % t2.tracefile
64 t2.post_cmd = ""
65 tasks.append(t2)
66
67 t4 = JavaTestTask()
68 t4.name = "Java version (with print)"
69 t4.tracefile = "../trace_short.dat"
70 t4.pre_cmd = ""
71 t4.cmd = "pushd ../java >/dev/null; java read_trace -p %s; popd >/dev/null;" % t4.tracefile
72 t4.post_cmd = ""
73 tasks.append(t4)
74
75 t6 = JavaTestTask()
76 t6.name = "Java version (with print, but sent to /dev/null)"
77 t6.tracefile = "../trace_med.dat"
78 t6.pre_cmd = ""
79 t6.cmd = "pushd ../java >/dev/null; java read_trace -p %s >/dev/null; popd >/dev/null;" % t6.tracefile
80 t6.post_cmd = ""
81 tasks.append(t6)
82
83 def average(lst):
84 sum = 0
85 count = 0
86
87 for i in lst:
88 sum += i
89 count += 1
90
91 if count == 0:
92 return 0
93 else:
94 return sum/count
95
96 def min(lst):
97 if len(lst) == 0:
98 return 0
99
100 found = lst[0]
101
102 for i in lst:
103 if i < found:
104 found = i
105
106 return found
107
108 def max(lst):
109 if len(lst) == 0:
110 return 0
111
112 found = lst[0]
113
114 for i in lst:
115 if i > found:
116 found = i
117
118 return found
119
120 def main():
121 for task in tasks:
122 while task.remain > 0:
123 os.system(task.pre_cmd)
124 t_start = time.time()
125 os.system(task.cmd)
126 t_end = time.time()
127 os.system(task.post_cmd)
128 task.remain-=1
129 task.results.append(t_end-t_start)
130 print(task.results)
131
132 print "------------------------------------"
133 for task in tasks:
134 print "RESULTS for " + task.name
135 print "Runs: " + str(len(task.results))
136 task.average_run_time = average(task.results)
137 print "Average run time: " + str(round(task.average_run_time, 3)) + " s"
138 task.print_extra_details()
139 #print "Min: " + str(round(min(task.results), 3))
140 #print "Max: " + str(round(max(task.results), 3))
141 print ""
142
143 main()
This page took 0.032016 seconds and 4 git commands to generate.