From b987c776723eea2f223885289c466386f12e823a Mon Sep 17 00:00:00 2001 From: Will Newton Date: Wed, 11 Sep 2013 13:07:33 +0100 Subject: [PATCH] benchtests: Rename argument to TIMING_INIT macro. The TIMING_INIT macro currently sets the number of loop iterations to 1000, which limits usefulness. Make the argument a clock resolution value and multiply by 1000 in bench-skeleton.c instead to allow easier reuse. ChangeLog: 2013-09-11 Will Newton * benchtests/bench-timing.h (TIMING_INIT): Rename ITERS parameter to RES. Remove hardcoded 1000 value. * benchtests/bench-skeleton.c (main): Pass RES parameter to TIMING_INIT and multiply result by 1000. --- ChangeLog | 7 +++++++ benchtests/bench-skeleton.c | 6 ++++-- benchtests/bench-timing.h | 14 ++++++-------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index a3f6ba7..6a54979 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-09-11 Will Newton + + * benchtests/bench-timing.h (TIMING_INIT): Rename ITERS + parameter to RES. Remove hardcoded 1000 value. + * benchtests/bench-skeleton.c (main): Pass RES parameter + to TIMING_INIT and multiply result by 1000. + 2013-09-10 Adhemerval Zanella * sysdeps/powerpc/fpu/libm-test-ulps: Update. diff --git a/benchtests/bench-skeleton.c b/benchtests/bench-skeleton.c index 4e3a507..05edc69 100644 --- a/benchtests/bench-skeleton.c +++ b/benchtests/bench-skeleton.c @@ -53,9 +53,11 @@ main (int argc, char **argv) memset (&runtime, 0, sizeof (runtime)); - unsigned long iters; + unsigned long iters, res; - TIMING_INIT (iters); + TIMING_INIT (res); + + iters = 1000 * res; for (int v = 0; v < NUM_VARIANTS; v++) { diff --git a/benchtests/bench-timing.h b/benchtests/bench-timing.h index 009813b..48a8521 100644 --- a/benchtests/bench-timing.h +++ b/benchtests/bench-timing.h @@ -25,10 +25,10 @@ hp_timing_t _dl_hp_timing_overhead; typedef hp_timing_t timing_t; -# define TIMING_INIT(iters) \ +# define TIMING_INIT(res) \ ({ \ HP_TIMING_DIFF_INIT(); \ - (iters) = 1000; \ + (res) = 1; \ }) # define TIMING_NOW(var) HP_TIMING_NOW (var) @@ -43,15 +43,13 @@ typedef hp_timing_t timing_t; #else typedef uint64_t timing_t; -/* Measure 1000 times the resolution of the clock. So for a 1ns - resolution clock, we measure 1000 iterations of the function call at a - time. Measurements close to the minimum clock resolution won't make - much sense, but it's better than having nothing at all. */ -# define TIMING_INIT(iters) \ +/* Measure the resolution of the clock so we can scale the number of + benchmark iterations by this value. */ +# define TIMING_INIT(res) \ ({ \ struct timespec start; \ clock_getres (CLOCK_PROCESS_CPUTIME_ID, &start); \ - (iters) = 1000 * start.tv_nsec; \ + (res) = start.tv_nsec; \ }) # define TIMING_NOW(var) \ -- 2.7.4