From 56737508002f1759da8d4d9944a8e98e58dce917 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Sat, 29 Mar 2014 09:40:19 +0530 Subject: Detailed benchmark outputs for functions This patch adds an option to get detailed benchmark output for functions. Invoking the benchmark with 'make DETAILED=1 bench' causes each benchmark program to store a mean execution time for each input it works on. This is useful to give a more comprehensive picture of performance of functions compared to just the single mean figure. --- benchtests/scripts/bench.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'benchtests/scripts') diff --git a/benchtests/scripts/bench.py b/benchtests/scripts/bench.py index 90317b59f8..492c764aa7 100755 --- a/benchtests/scripts/bench.py +++ b/benchtests/scripts/bench.py @@ -50,6 +50,7 @@ STRUCT_TEMPLATE = ''' struct args { %(args)s + double timing; }; struct _variants @@ -80,6 +81,9 @@ struct _variants variants[%(num_variants)d] = { # Epilogue for the generated source file. EPILOGUE = ''' +#define RESULT(__v, __i) (variants[(__v)].in[(__i)].timing) +#define RESULT_ACCUM(r, v, i, old, new) \\ + ((RESULT ((v), (i))) = (RESULT ((v), (i)) * (old) + (r)) / ((new) + 1)) #define BENCH_FUNC(i, j) ({%(getret)s CALL_BENCH_FUNC (i, j);}) #define FUNCNAME "%(func)s" #include "bench-skeleton.c"''' @@ -168,7 +172,7 @@ def _print_arg_data(func, directives, all_vals): # Now print the values. variants = [] for (k, vals), i in zip(all_vals.items(), itertools.count()): - out = [' {%s},' % v for v in vals] + out = [' {%s, 0},' % v for v in vals] # Members for the variants structure list that we will # print later. -- cgit 1.4.1