diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-11-27 12:29:59 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-11-27 12:29:59 -0800 |
commit | 17ee516bcd20561dc1badef8a6812f7d1d99a550 (patch) | |
tree | 5a09ebb6b41f1ab555ebc6cd9af1f8d40d684fae | |
parent | f4031bb8de666362a597769457c7cc8900a02aa5 (diff) |
improve benchmark output
-rw-r--r-- | tests/runner.py | 32 |
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 = ''' |