| 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() |