From dcfcb8e3928f68706e2bfa7527de363a899d2a69 Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Fri, 3 Mar 2023 12:54:45 +0000 Subject: [PATCH] Benchtests: Remove simple_mem(r)chr Instead of benchmarking slow byte oriented loops, include the optimized generic memchr/memrchr implementation. Adjust iteration count to reduce benchmark time. Reviewed-by: Adhemerval Zanella --- benchtests/bench-memchr.c | 40 +++++++++++++++++++++----------------- benchtests/bench-memrchr.c | 16 ++++----------- 2 files changed, 26 insertions(+), 30 deletions(-) diff --git a/benchtests/bench-memchr.c b/benchtests/bench-memchr.c index b99995e293..90bd3879e3 100644 --- a/benchtests/bench-memchr.c +++ b/benchtests/bench-memchr.c @@ -16,6 +16,8 @@ License along with the GNU C Library; if not, see . */ +#include "json-lib.h" + #ifndef WIDE # define SMALL_CHAR 127 #else @@ -31,35 +33,25 @@ # endif /* WIDE */ # include "bench-string.h" -# ifndef WIDE -# define SIMPLE_MEMCHR simple_memchr -# else -# define SIMPLE_MEMCHR simple_wmemchr -# endif /* WIDE */ +typedef void *(*proto_t) (const void *, int, size_t); -typedef CHAR *(*proto_t) (const CHAR *, int, size_t); -CHAR *SIMPLE_MEMCHR (const CHAR *, int, size_t); +void * +generic_memchr (const void *, int, size_t); -IMPL (SIMPLE_MEMCHR, 0) IMPL (MEMCHR, 1) -CHAR * -SIMPLE_MEMCHR (const CHAR *s, int c, size_t n) -{ - while (n--) - if (*s++ == (CHAR) c) - return (CHAR *) s - 1; - return NULL; -} +# ifndef WIDE +IMPL (generic_memchr, 0) +# endif + #endif /* !USE_AS_MEMRCHR */ -#include "json-lib.h" static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c, size_t n) { - size_t i, iters = INNER_LOOP_ITERS_LARGE; + size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; TIMING_NOW (start); @@ -250,3 +242,15 @@ test_main (void) } #include + +#ifndef WIDE +# ifndef USE_AS_MEMRCHR +# undef MEMCHR +# define MEMCHR generic_memchr +# include +# else +# undef MEMRCHR +# define MEMRCHR generic_memrchr +# include +# endif +#endif diff --git a/benchtests/bench-memrchr.c b/benchtests/bench-memrchr.c index 4f594ee7cd..1f8c884503 100644 --- a/benchtests/bench-memrchr.c +++ b/benchtests/bench-memrchr.c @@ -21,20 +21,12 @@ #include "bench-string.h" typedef char *(*proto_t) (const char *, int, size_t); -char *simple_memrchr (const char *, int, size_t); -IMPL (simple_memrchr, 0) -IMPL (memrchr, 1) +void * +generic_memrchr (const void *, int, size_t); -char * -simple_memrchr (const char *s, int c, size_t n) -{ - s = s + n; - while (n--) - if (*--s == (char) c) - return (char *) s; - return NULL; -} +IMPL (memrchr, 1) +IMPL (generic_memrchr, 0) #define USE_AS_MEMRCHR #include "bench-memchr.c" -- 2.43.5