mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Improve bench-strlen
The current bench-strlen compares against a slow byte-oriented strlen which is not useful given it's too easy to beat. Remove it and compare against the generic C strlen version and memchr. * benchtests/bench-strlen.c (generic_strlen): New function. (memchr_strlen): New function.
This commit is contained in:
parent
ba4b8fab20
commit
5289f1f56b
@ -1,3 +1,8 @@
|
||||
2018-12-27 Wilco Dijkstra <wdijkstr@arm.com>
|
||||
|
||||
* benchtests/bench-strlen.c (generic_strlen): New function.
|
||||
(memchr_strlen): New function.
|
||||
|
||||
2018-12-26 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* sysdeps/x86_64/fpu/s_sincosf.S: Removed.
|
||||
|
@ -24,24 +24,15 @@
|
||||
#endif
|
||||
#include "bench-string.h"
|
||||
|
||||
#ifndef WIDE
|
||||
# define MAX_CHAR CHAR_MAX
|
||||
#else
|
||||
# define MAX_CHAR WCHAR_MAX
|
||||
#endif
|
||||
|
||||
#include "json-lib.h"
|
||||
|
||||
typedef size_t (*proto_t) (const CHAR *);
|
||||
|
||||
size_t
|
||||
simple_STRLEN (const CHAR *s)
|
||||
{
|
||||
const CHAR *p;
|
||||
size_t generic_strlen (const CHAR *);
|
||||
size_t memchr_strlen (const CHAR *);
|
||||
|
||||
for (p = s; *p; ++p);
|
||||
return p - s;
|
||||
}
|
||||
IMPL (memchr_strlen, 0)
|
||||
IMPL (generic_strlen, 0)
|
||||
|
||||
#ifndef WIDE
|
||||
size_t
|
||||
@ -52,7 +43,12 @@ builtin_strlen (const CHAR *p)
|
||||
IMPL (builtin_strlen, 0)
|
||||
#endif
|
||||
|
||||
IMPL (simple_STRLEN, 0)
|
||||
size_t
|
||||
memchr_strlen (const CHAR *p)
|
||||
{
|
||||
return (const CHAR *)MEMCHR (p, 0, PTRDIFF_MAX) - p;
|
||||
}
|
||||
|
||||
IMPL (STRLEN, 1)
|
||||
|
||||
|
||||
@ -161,3 +157,13 @@ test_main (void)
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
|
||||
#define libc_hidden_builtin_def(X)
|
||||
#ifndef WIDE
|
||||
# undef STRLEN
|
||||
# define STRLEN generic_strlen
|
||||
# include <string/strlen.c>
|
||||
#else
|
||||
# define WCSLEN generic_strlen
|
||||
# include <wcsmbs/wcslen.c>
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user