From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1895) id 9FFE73851143; Wed, 8 Mar 2023 18:47:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9FFE73851143 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1678301221; bh=lMF9sTyGXEX88p9IV2b/PIsMIsDj2dnJnsC3KIhNJWk=; h=From:To:Subject:Date:From; b=DOe0/JT4ACyWULBjQfOlvE8BRi6sgy1hXLJfO6w4IkqLY77m40XkiMccvZqHo9Jw5 YyutNpVgIwDxJN9hKY4JXCAFS+wimtVIWehS+1qfOk01gsB1IRbYrBISrDatR+QlIo B5lFmyOE3GBfichp0JB2/+UVR1xM9Z1LyzJ66EaM= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Wilco Dijkstra To: glibc-cvs@sourceware.org Subject: [glibc] Benchtests: Remove simple_str(r)chr X-Act-Checkin: glibc X-Git-Author: Wilco Dijkstra X-Git-Refname: refs/heads/master X-Git-Oldrev: 9ab7c42387409d5cf8facd0a56cfd98ce55b8cc3 X-Git-Newrev: 10f980d31e3d65c4c5bfafd176e7e1db92e2babe Message-Id: <20230308184701.9FFE73851143@sourceware.org> Date: Wed, 8 Mar 2023 18:47:01 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=10f980d31e3d65c4c5bfafd176e7e1db92e2babe commit 10f980d31e3d65c4c5bfafd176e7e1db92e2babe Author: Wilco Dijkstra Date: Fri Mar 3 16:10:55 2023 +0000 Benchtests: Remove simple_str(r)chr Instead of benchmarking slow byte oriented loops, include the optimized generic strchr and strrchr implementation. Adjust iteration count to reduce benchmark time. Reviewed-by: Adhemerval Zanella Diff: --- benchtests/bench-strchr.c | 38 +++++++++++++++++++++++--------------- benchtests/bench-strrchr.c | 31 +++++++++++++++---------------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/benchtests/bench-strchr.c b/benchtests/bench-strchr.c index 420930d558..116ec19760 100644 --- a/benchtests/bench-strchr.c +++ b/benchtests/bench-strchr.c @@ -39,7 +39,6 @@ # ifdef USE_FOR_STRCHRNUL # undef STRCHR # define STRCHR strchrnul -# define simple_STRCHR simple_STRCHRNUL # endif /* !USE_FOR_STRCHRNUL */ # define MIDDLE_CHAR 127 # define SMALL_CHAR 23 @@ -47,7 +46,6 @@ # ifdef USE_FOR_STRCHRNUL # undef STRCHR # define STRCHR wcschrnul -# define simple_STRCHR simple_WCSCHRNUL # endif /* !USE_FOR_STRCHRNUL */ # define MIDDLE_CHAR 1121 # define SMALL_CHAR 851 @@ -67,18 +65,19 @@ typedef CHAR *(*proto_t) (const CHAR *, int); -CHAR * -simple_STRCHR (const CHAR *s, int c) -{ - for (; *s != (CHAR) c; ++s) - if (*s == '\0') - return NULLRET ((CHAR *) s); - return (CHAR *) s; -} - -IMPL (simple_STRCHR, 0) IMPL (STRCHR, 1) +#ifndef WIDE +char *generic_strchr (const char *, int); +char *generic_strchrnul (const char *, int); + +# ifndef USE_FOR_STRCHRNUL +IMPL (generic_strchr, 0) +# else +IMPL (generic_strchrnul, 0) +# endif +#endif + #ifndef USE_FOR_STRCHRNUL /* Random benchmarks for strchr (if return is CHAR or NULL). The rational for the benchmark is returning null/char can be done with @@ -97,7 +96,7 @@ static void __attribute__ ((noinline, noclone)) do_one_rand_plus_branch_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, const CHAR *c) { - size_t i, iters = INNER_LOOP_ITERS_LARGE; + size_t i, iters = INNER_LOOP_ITERS8; int must_execute = 0; timing_t start, stop, cur; TIMING_NOW (start); @@ -122,7 +121,7 @@ static void __attribute__ ((noinline, noclone)) do_one_rand_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, const CHAR *c) { - size_t i, iters = INNER_LOOP_ITERS_LARGE; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; TIMING_NOW (start); for (i = 0; i < iters; ++i) @@ -210,7 +209,7 @@ static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c, const CHAR *exp_res) { - size_t i, iters = INNER_LOOP_ITERS_LARGE; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; const CHAR *res = CALL (impl, s, c); if (res != exp_res) @@ -401,3 +400,12 @@ test_main (void) } #include + +#ifndef WIDE +# undef STRCHRNUL +# define STRCHRNUL generic_strchrnul +# undef STRCHR +# define STRCHR generic_strchr +# include +# include +#endif diff --git a/benchtests/bench-strrchr.c b/benchtests/bench-strrchr.c index a33a657a27..f846797770 100644 --- a/benchtests/bench-strrchr.c +++ b/benchtests/bench-strrchr.c @@ -28,30 +28,20 @@ #define BIG_CHAR MAX_CHAR #ifdef WIDE -# define SIMPLE_STRRCHR simple_wcsrchr # define SMALL_CHAR 1273 #else -# define SIMPLE_STRRCHR simple_strrchr # define SMALL_CHAR 127 -#endif -typedef CHAR *(*proto_t) (const CHAR *, int); -CHAR *SIMPLE_STRRCHR (const CHAR *, int); +char * +generic_strrchr (const char *, int); -IMPL (SIMPLE_STRRCHR, 0) -IMPL (STRRCHR, 1) +IMPL (generic_strrchr, 0) -CHAR * -SIMPLE_STRRCHR (const CHAR *s, int c) -{ - const CHAR *ret = NULL; +#endif - for (; *s != '\0'; ++s) - if (*s == (CHAR) c) - ret = s; +typedef CHAR *(*proto_t) (const CHAR *, int); - return (CHAR *) (c == '\0' ? s : ret); -} +IMPL (STRRCHR, 1) static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c, @@ -237,3 +227,12 @@ test_main (void) } #include + +#define weak_alias(X,Y) +#define libc_hidden_builtin_def(X) +#ifndef WIDE +# undef STRRCHR +# define STRRCHR generic_strrchr +# define __memrchr memrchr +# include +#endif