about summary refs log tree commit diff
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.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--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>