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 /posix/tst-rxspencer.c | |
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 'posix/tst-rxspencer.c')
0 files changed, 0 insertions, 0 deletions