aboutsummaryrefslogtreecommitdiff
path: root/benchtests/scripts
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2014-03-29 09:40:19 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2014-03-29 09:40:19 +0530
commit56737508002f1759da8d4d9944a8e98e58dce917 (patch)
tree25105d29ef08035127c492424c545a3b3c04634f /benchtests/scripts
parentcb5e4aada7f044fc029dd64b31411a23bb09c287 (diff)
downloadglibc-56737508002f1759da8d4d9944a8e98e58dce917.tar
glibc-56737508002f1759da8d4d9944a8e98e58dce917.tar.gz
glibc-56737508002f1759da8d4d9944a8e98e58dce917.tar.bz2
glibc-56737508002f1759da8d4d9944a8e98e58dce917.zip
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.
Diffstat (limited to 'benchtests/scripts')
-rwxr-xr-xbenchtests/scripts/bench.py6
1 files changed, 5 insertions, 1 deletions
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.