Message ID | 523061C7.9010900@linaro.org |
---|---|
State | Accepted |
Headers | show |
On Wed, Sep 11, 2013 at 01:27:51PM +0100, Will Newton wrote: > > 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 <will.newton@linaro.org> > > * benchtests/bench-timing.h: Rename iters parameter > to res and remove hardcoded 1000 value. > * benchtests/bench-skeleton.c: Pass res parameter to > TIMING_INIT and multiply by 1000. ChangeLog should be: * benchtest/bench-timing.h (TIMING_INIT): Rename parameter to RES. Remove hardcoded 1000 value. * benchtests/bench-skeleton.c (main): Pass RES parameter to TIMING_INIT and multiply result by 1000. The change itself is fine. Thanks, Siddhesh
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) \