0436dfbb |
1 | import os |
2 | import stat |
3 | import time |
4 | |
f65716cf |
5 | runs=10 |
6 | |
7 | class Task: |
8 | name = "unnamed" |
9 | pre_cmd = "" |
10 | cmd = "" |
11 | post_cmd = "" |
12 | results = 0 |
0436dfbb |
13 | remain = 3 |
f65716cf |
14 | |
15 | def __init__(self): |
16 | self.results = [] |
17 | |
0436dfbb |
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 | |
f65716cf |
33 | tasks = [] |
34 | |
0436dfbb |
35 | t1 = JavaTestTask() |
f65716cf |
36 | t1.name = "C version (without print)" |
0436dfbb |
37 | t1.tracefile = "../trace_long.dat" |
f65716cf |
38 | t1.pre_cmd = "" |
0436dfbb |
39 | t1.cmd = "pushd ../c >/dev/null; ./main %s; popd >/dev/null;" % t1.tracefile |
f65716cf |
40 | t1.post_cmd = "" |
41 | tasks.append(t1) |
42 | |
0436dfbb |
43 | t3 = JavaTestTask() |
f65716cf |
44 | t3.name = "C version (with print)" |
0436dfbb |
45 | t3.tracefile = "../trace_med.dat" |
f65716cf |
46 | t3.pre_cmd = "" |
0436dfbb |
47 | t3.cmd = "pushd ../c >/dev/null; ./main -p %s; popd >/dev/null;" % t3.tracefile |
f65716cf |
48 | t3.post_cmd = "" |
0436dfbb |
49 | tasks.append(t3) |
f65716cf |
50 | |
0436dfbb |
51 | t5 = JavaTestTask() |
f65716cf |
52 | t5.name = "C version (with print, but sent to /dev/null)" |
0436dfbb |
53 | t5.tracefile = "../trace_long.dat" |
f65716cf |
54 | t5.pre_cmd = "" |
0436dfbb |
55 | t5.cmd = "pushd ../c >/dev/null; ./main -p %s >/dev/null; popd >/dev/null;" % t5.tracefile |
f65716cf |
56 | t5.post_cmd = "" |
0436dfbb |
57 | tasks.append(t5) |
f65716cf |
58 | |
0436dfbb |
59 | t2 = JavaTestTask() |
f65716cf |
60 | t2.name = "Java version (without print)" |
d36dea91 |
61 | t2.tracefile = "../trace_long.dat" |
f65716cf |
62 | t2.pre_cmd = "" |
0436dfbb |
63 | t2.cmd = "pushd ../java >/dev/null; java read_trace %s; popd >/dev/null;" % t2.tracefile |
f65716cf |
64 | t2.post_cmd = "" |
65 | tasks.append(t2) |
66 | |
0436dfbb |
67 | t4 = JavaTestTask() |
f65716cf |
68 | t4.name = "Java version (with print)" |
0436dfbb |
69 | t4.tracefile = "../trace_short.dat" |
f65716cf |
70 | t4.pre_cmd = "" |
0436dfbb |
71 | t4.cmd = "pushd ../java >/dev/null; java read_trace -p %s; popd >/dev/null;" % t4.tracefile |
f65716cf |
72 | t4.post_cmd = "" |
0436dfbb |
73 | tasks.append(t4) |
f65716cf |
74 | |
0436dfbb |
75 | t6 = JavaTestTask() |
f65716cf |
76 | t6.name = "Java version (with print, but sent to /dev/null)" |
0436dfbb |
77 | t6.tracefile = "../trace_med.dat" |
f65716cf |
78 | t6.pre_cmd = "" |
0436dfbb |
79 | t6.cmd = "pushd ../java >/dev/null; java read_trace -p %s >/dev/null; popd >/dev/null;" % t6.tracefile |
f65716cf |
80 | t6.post_cmd = "" |
0436dfbb |
81 | tasks.append(t6) |
f65716cf |
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)) |
0436dfbb |
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() |
94c1d0b8 |
139 | #print "Min: " + str(round(min(task.results), 3)) |
140 | #print "Max: " + str(round(max(task.results), 3)) |
f65716cf |
141 | print "" |
142 | |
143 | main() |