diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2013-04-30 14:10:20 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2013-04-30 14:10:20 +0530 |
commit | d569c6eeb48219993063f956e516704281602f7d (patch) | |
tree | ee4b52c88456865a025c5943ff6f0bb5b741ff0a /benchtests/Makefile | |
parent | a6a242fe7cc0d7fcac1c9741d8be2ca8c2a5c744 (diff) | |
download | glibc-d569c6eeb48219993063f956e516704281602f7d.tar.gz glibc-d569c6eeb48219993063f956e516704281602f7d.tar.xz glibc-d569c6eeb48219993063f956e516704281602f7d.zip |
Maintain runtime of each benchmark at ~10 seconds
The idea to run benchmarks for a constant number of iterations is problematic. While the benchmarks may run for 10 seconds on x86_64, they could run for about 30 seconds on powerpc and worse, over 3 minutes on arm. Besides that, adding a new benchmark is cumbersome since one needs to find out the number of iterations needed for a sufficient runtime. A better idea would be to run each benchmark for a specific amount of time. This patch does just that. The run time defaults to 10 seconds and it is configurable at command line: make BENCH_DURATION=5 bench
Diffstat (limited to 'benchtests/Makefile')
-rw-r--r-- | benchtests/Makefile | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/benchtests/Makefile b/benchtests/Makefile index 387fde441d..9d25d6933a 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -23,12 +23,6 @@ # - Append the function name to the bench variable -# - Define foo-ITER with the number of iterations you want to run. Keep it -# high enough that the overhead of clock_gettime is only a small fraction of -# the total run time of the test. A good idea would be to keep the run time -# of each test at around 10 seconds for x86_64. That is just a guideline, -# since some scenarios may require higher run times. - # - Define foo-ARGLIST as a colon separated list of types of the input # arguments. Use `void` if function does not take any inputs. Put in quotes # if the input argument is a pointer, e.g.: @@ -49,83 +43,70 @@ bench := exp pow rint sin cos tan atan modf \ slowexp slowpow slowsin slowcos slowtan slowatan # exp function fast path: sysdeps/ieee754/dbl-64/e_exp.c -exp-ITER = 5e8 exp-ARGLIST = double exp-RET = double LDFLAGS-bench-exp = -lm # pow function fast path: sysdeps/ieee754/dbl-64/e_pow.c -pow-ITER = 2e8 pow-ARGLIST = double:double pow-RET = double LDFLAGS-bench-pow = -lm -rint-ITER = 250000000 rint-ARGLIST = double rint-RET = double LDFLAGS-bench-rint = -lm # exp function slowest path: sysdeps/ieee754/dbl-64/mpexp.c -slowexp-ITER = 3e5 slowexp-ARGLIST = double slowexp-RET = double slowexp-INCLUDE = slowexp.c LDFLAGS-bench-slowexp = -lm # sin function fast path: sysdeps/ieee754/dbl-64/s_sin.c -sin-ITER = 3e9 sin-ARGLIST = double sin-RET = double LDFLAGS-bench-sin = -lm # cos function fast path: sysdeps/ieee754/dbl-64/s_sin.c -cos-ITER = 3e9 cos-ARGLIST = double cos-RET = double LDFLAGS-bench-cos = -lm # tan function fast path: sysdeps/ieee754/dbl-64/s_tan.c -tan-ITER = 3e9 tan-ARGLIST = double tan-RET = double LDFLAGS-bench-tan = -lm # atan function fast path: sysdeps/ieee754/dbl-64/s_atan.c -atan-ITER = 6e9 atan-ARGLIST = double atan-RET = double LDFLAGS-bench-atan = -lm # pow function slowest path: sysdeps/ieee754/dbl-64/slowpow.c -slowpow-ITER = 1e5 slowpow-ARGLIST = double:double slowpow-RET = double slowpow-INCLUDE = slowpow.c LDFLAGS-bench-slowpow = -lm # sin function slowest path: sysdeps/ieee754/dbl-64/sincos32.c -slowsin-ITER = 3e7 slowsin-ARGLIST = double slowsin-RET = double slowsin-INCLUDE = slowsin.c LDFLAGS-bench-slowsin = -lm # cos function slowest path: sysdeps/ieee754/dbl-64/sincos32.c -slowcos-ITER = 3e7 slowcos-ARGLIST = double slowcos-RET = double slowcos-INCLUDE = slowcos.c LDFLAGS-bench-slowcos = -lm # tan function slowest path: sysdeps/ieee754/dbl-64/mptan.c -slowtan-ITER = 3e7 slowtan-ARGLIST = double slowtan-RET = double slowtan-INCLUDE = slowtan.c LDFLAGS-bench-slowtan = -lm # atan function slowest path: sysdeps/ieee754/dbl-64/mpatan.c -slowatan-ITER = 3e8 slowatan-ARGLIST = double slowatan-RET = double slowatan-INCLUDE = slowatan.c @@ -141,6 +122,13 @@ include ../Rules binaries-bench := $(addprefix $(objpfx)bench-,$(bench)) +# The default duration: 10 seconds. +ifndef BENCH_DURATION +BENCH_DURATION := 10 +endif + +CPPFLAGS-nonlib = -DDURATION=$(BENCH_DURATION) + # This makes sure CPPFLAGS-nonlib and CFLAGS-nonlib are passed # for all these modules. cpp-srcs-left := $(binaries-bench:=.c) @@ -176,5 +164,5 @@ $(objpfx)bench-%.c: %-inputs $(bench-deps) cat $($*-INCLUDE); \ fi; \ $(..)scripts/bench.pl $(patsubst %-inputs,%,$<) \ - $($*-ITER) $($*-ARGLIST) $($*-RET); } > $@-tmp + $($*-ARGLIST) $($*-RET); } > $@-tmp mv -f $@-tmp $@ |