diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-02-24 08:08:14 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-02-24 08:08:14 +0530 |
commit | 8068df4eb196130c20cf62f912913b9c80605fc7 (patch) | |
tree | 069f193bc67e38c3dddcf66c2710d169cac32596 | |
parent | 21e0d3b8076ad3870cf82e91c48f0ecfb17f0c83 (diff) | |
download | glibc-siddhesh/sem_timedwait.zip glibc-siddhesh/sem_timedwait.tar.gz glibc-siddhesh/sem_timedwait.tar.bz2 |
benchtests: New benchmark for sem_timedwaitsiddhesh/sem_timedwait
Measure performance of the sem_timedwait function for a max wait of
1us in the contended and uncontended case.
-rw-r--r-- | benchtests/Makefile | 43 | ||||
-rw-r--r-- | benchtests/sem_timedwait_test-inputs | 10 | ||||
-rw-r--r-- | benchtests/src-sem_timedwait_test.c | 18 |
3 files changed, 49 insertions, 22 deletions
diff --git a/benchtests/Makefile b/benchtests/Makefile index 792f61f..1f38ff1 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -20,9 +20,13 @@ # Add benchmark functions in alphabetical order. subdir := benchtests -bench := acos acosh asin asinh atan atanh cos cosh exp exp2 log log2 modf pow \ +math-bench := acos acosh asin asinh atan atanh cos cosh exp exp2 log log2 modf pow \ rint sin sincos sinh sqrt tan tanh +pthread-bench := sem_timedwait_test + +bench := $(math-bench) $(pthread-bench) + # String function benchmarks. string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \ mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \ @@ -35,27 +39,6 @@ stdlib-bench := strtod benchset := $(string-bench-all) $(stdlib-bench) -LDLIBS-bench-acos = -lm -LDLIBS-bench-acosh = -lm -LDLIBS-bench-asin = -lm -LDLIBS-bench-asinh = -lm -LDLIBS-bench-atan = -lm -LDLIBS-bench-atanh = -lm -LDLIBS-bench-cos = -lm -LDLIBS-bench-cosh = -lm -LDLIBS-bench-exp = -lm -LDLIBS-bench-exp2 = -lm -LDLIBS-bench-log = -lm -LDLIBS-bench-log2 = -lm -LDLIBS-bench-pow = -lm -LDLIBS-bench-rint = -lm -LDLIBS-bench-sin = -lm -LDLIBS-bench-sinh = -lm -LDLIBS-bench-sqrt = -lm -LDLIBS-bench-tan = -lm -LDLIBS-bench-tanh = -lm -LDLIBS-bench-sincos = -lm - # Rules to build and execute the benchmarks. Do not put any benchmark @@ -71,6 +54,22 @@ include ../Rules binaries-bench := $(addprefix $(objpfx)bench-,$(bench)) binaries-benchset := $(addprefix $(objpfx)bench-,$(benchset)) +# Link to pthread +ifeq ($(build-shared),yes) +$(addprefix $(objpfx)bench-, \ + $(pthread-bench)): $(objpfx)$(..)nptl/libpthread.so \ + $(objpfx)$(..)nptl/libpthread_nonshared.a +else +$(addprefix $(objpfx)bench-,$(pthread-bench)): $(objpfx)$(..)libpthread.a +endif + +# Link to libm +ifeq ($(build-shared),yes) +$(addprefix $(objpfx)bench-, $(math-bench)): $(objpfx)$(..)math/libm.so +else +$(addprefix $(objpfx)bench-,$(math-bench)): $(objpfx)$(..)math/libm.a +endif + # The default duration: 10 seconds. ifndef BENCH_DURATION BENCH_DURATION := 10 diff --git a/benchtests/sem_timedwait_test-inputs b/benchtests/sem_timedwait_test-inputs new file mode 100644 index 0000000..88a64f5 --- /dev/null +++ b/benchtests/sem_timedwait_test-inputs @@ -0,0 +1,10 @@ +## includes: stdbool.h,pthread.h,semaphore.h +## include-sources: src-sem_timedwait_test.c +## init: init_test +# The sole argument differentiates between the default uncontended and +# the contended case. +## args: bool +## name: uncontended +false +## name: contended +true diff --git a/benchtests/src-sem_timedwait_test.c b/benchtests/src-sem_timedwait_test.c new file mode 100644 index 0000000..e50affd --- /dev/null +++ b/benchtests/src-sem_timedwait_test.c @@ -0,0 +1,18 @@ +sem_t sem; + +void +init_test (void) +{ + sem_init (&sem, 0, 0); +} + +static inline void __always_inline +sem_timedwait_test (bool contended) +{ + struct timespec t; + clock_gettime (CLOCK_REALTIME, &t); + t.tv_nsec += 10000; + if (!contended) + sem_post (&sem); + sem_timedwait (&sem, &t); +} |