aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2016-03-26 19:09:07 +0000
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2016-04-01 10:44:44 -0300
commit91f3b75f47c9eca3299098c3dcc2f5d9dad320b1 (patch)
treef00e3a58386999ac44a322211ff74cffcb37df99 /ChangeLog
parentd3496c9f4f27d3009b71be87f6108b4fed7314bd (diff)
downloadglibc-91f3b75f47c9eca3299098c3dcc2f5d9dad320b1.tar
glibc-91f3b75f47c9eca3299098c3dcc2f5d9dad320b1.tar.gz
glibc-91f3b75f47c9eca3299098c3dcc2f5d9dad320b1.tar.bz2
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--ChangeLog16
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>