diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-03-26 19:09:07 +0000 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-04-01 10:44:44 -0300 |
commit | 91f3b75f47c9eca3299098c3dcc2f5d9dad320b1 (patch) | |
tree | f00e3a58386999ac44a322211ff74cffcb37df99 /ChangeLog | |
parent | d3496c9f4f27d3009b71be87f6108b4fed7314bd (diff) | |
download | glibc-91f3b75f47c9eca3299098c3dcc2f5d9dad320b1.tar.gz glibc-91f3b75f47c9eca3299098c3dcc2f5d9dad320b1.tar.xz glibc-91f3b75f47c9eca3299098c3dcc2f5d9dad320b1.zip |
Improve generic strspn performance
As for strcspn, this patch improves strspn performance using a much faster algorithm. It first constructs a 256-entry table based on the accept string and then uses it as a lookup table for the input string. As for strcspn optimization, it is generally at least 10 times faster than the existing implementation on bench-strspn on a few AArch64 implementations. Also the string/bits/string2.h inlines make no longer sense, as current implementation will already implement most of the optimizations. Tested on x86_64, i686, and aarch64. * string/strspn.c (strcspn): Rewrite function. * string/bits/string2.h (strspn): Use __builtin_strcspn. (__strspn_c1): Remove inline function. (__strspn_c2): Likewise. (__strspn_c3): Likewise. * string/string-inlines.c [SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c1): Add compatibility symbol. [SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c2): Likewise. [SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c3): Likewise.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 0d522ad4c4..79e2e23398 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2016-04-01 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + * string/strspn.c (strcspn): Rewrite function. + * string/bits/string2.h (strspn): Use __builtin_strcspn. + (__strspn_c1): Remove inline function. + (__strspn_c2): Likewise. + (__strspn_c3): Likewise. + * string/string-inlines.c + [SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c1): Add + compatibility symbol. + [SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c2): + Likewise. + [SHLIB_COMPAT(libc, GLIBC_2_1_1, GLIBC_2_24)] (__strspn_c3): + Likewise. + * string/string-inlines.c: Include generic version. + 2016-04-01 Wilco Dijkstra <wdijkstr@arm.com> Adhemerval Zanella <adhemerval.zanella@linaro.org> |