benchtests: Rename argument to TIMING_INIT macro.

Message ID 523061C7.9010900@linaro.org
State Accepted
Headers show

Commit Message

Will Newton Sept. 11, 2013, 12:27 p.m.
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.
---
 benchtests/bench-skeleton.c |  6 ++++--
 benchtests/bench-timing.h   | 14 ++++++--------
 2 files changed, 10 insertions(+), 10 deletions(-)

Comments

Siddhesh Poyarekar Sept. 11, 2013, 12:48 p.m. | #1
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

Patch

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) \