aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-11-27 12:29:59 -0800
committerAlon Zakai <alonzakai@gmail.com>2011-11-27 12:29:59 -0800
commit17ee516bcd20561dc1badef8a6812f7d1d99a550 (patch)
tree5a09ebb6b41f1ab555ebc6cd9af1f8d40d684fae
parentf4031bb8de666362a597769457c7cc8900a02aa5 (diff)
improve benchmark output
-rw-r--r--tests/runner.py32
1 files changed, 20 insertions, 12 deletions
diff --git a/tests/runner.py b/tests/runner.py
index 52be829c..0eff4c11 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -4689,28 +4689,37 @@ else:
super(benchmark, self).setUp()
- def print_stats(self, times, native_times, normalize_by_native=False):
+ def print_stats(self, times, native_times, last=False):
mean = sum(times)/len(times)
squared_times = map(lambda x: x*x, times)
mean_of_squared = sum(squared_times)/len(times)
std = math.sqrt(mean_of_squared - mean*mean)
+ sorted_times = times[:]
+ sorted_times.sort()
+ median = sum(sorted_times[len(sorted_times)/2 - 1:len(sorted_times)/2 + 1])/2
mean_native = sum(native_times)/len(native_times)
squared_native_times = map(lambda x: x*x, native_times)
mean_of_squared_native = sum(squared_native_times)/len(native_times)
std_native = math.sqrt(mean_of_squared_native - mean_native*mean_native)
+ sorted_native_times = native_times[:]
+ sorted_native_times.sort()
+ median_native = sum(sorted_native_times[len(sorted_native_times)/2 - 1:len(sorted_native_times)/2 + 1])/2
- if not normalize_by_native:
- final = mean / mean_native
- else:
- final = 0
+ final = mean / mean_native
+
+ if last:
+ norm = 0
for i in range(len(times)):
- final += times[i]/native_times[i]
- final /= len(times)
+ norm += times[i]/native_times[i]
+ norm /= len(times)
+ print
+ print ' JavaScript: %.3f Native: %.3f Ratio: %.3f Normalized ratio: %.3f' % (mean, mean_native, final, norm)
+ return
print
- print ' JavaScript: mean: %.3f (+-%.3f) seconds (max: %.3f, min: %.3f, noise/signal: %.3f) (%d runs)' % (mean, std, max(times), min(times), std/mean, TEST_REPS)
- print ' Native : mean: %.3f (+-%.3f) seconds (max: %.3f, min: %.3f, noise/signal: %.3f) JS is %.2f X slower' % (mean_native, std_native, max(native_times), min(native_times), std_native/mean_native, final)
+ print ' JavaScript: mean: %.3f (+-%.3f) secs median: %.3f range: %.3f-%.3f (noise: %3.3f%%) (%d runs)' % (mean, std, median, min(times), max(times), 100*std/mean, TEST_REPS)
+ print ' Native : mean: %.3f (+-%.3f) secs median: %.3f range: %.3f-%.3f (noise: %3.3f%%) JS is %.2f X slower' % (mean_native, std_native, median_native, min(native_times), max(native_times), 100*std_native/mean_native, final)
def do_benchmark(self, src, args=[], expected_output='FAIL', main_file=None):
dirname = self.get_dir()
@@ -4783,9 +4792,8 @@ else:
tests_done += 1
if tests_done == TOTAL_TESTS:
- print
- print 'Total stats:'
- self.print_stats(total_times, total_native_times, True)
+ print 'Total stats:',
+ self.print_stats(total_times, total_native_times, last=True)
def test_primes(self):
src = '''