This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 0/4] Improve generic strspn/strcspn/strpbrk
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Mon, 28 Mar 2016 12:19:45 -0300
- Subject: [PATCH 0/4] Improve generic strspn/strcspn/strpbrk
- Authentication-results: sourceware.org; auth=none
This is a followup on previous Wilco patch [1] to optimize strcspn
that also optimizes the generic strspn and strpbrk. I used the
same strategy Wilco has used on strcspn for strspn and rewrote
strpbrk to just use strcspn instead.
I also tried to play with compiler options to check if it could
omit the memset call generation when initializing the lookup
table, but without success. This is a similar strategy I used
on powerpc64 str{c}spn optimization.
Wilco initial approach was to remove the __strcspn_c{1,2,3}
inline function in string2.h header, however they are part of
ABI (to support compilers that do not inline the calls) and it
is not safe to remove then. I have added it back, although the
strcspn new macro does not uses them and I also used the same
strategy for both strspn and strpbrk.
Performance-wise the algorithm is similar with current optimized
assembly one already in GLIBC (x86 and powerpc). In fact, for
powerpc64 the algorithm performance is similar to assembly
routines which lead me to remove them. i686 default one
is slight faster, while the SSE4.1 variant shows much better
performance (through the use of SIMD instructions).
[1] https://sourceware.org/ml/libc-alpha/2016-01/msg00173.html
Adhemerval Zanella (3):
Improve generic strspn performance
Improve generic strpbrk performance
Remove powerpc64 strspn, strcspn, and strpbrk implementation
Wilco Dijkstra (1):
Improve generic strcspn performance
ChangeLog | 18 +++++
string/bits/string2.h | 123 +++++-------------------------
string/strcspn.c | 44 +++++++++--
string/strpbrk.c | 12 +--
string/strspn.c | 56 ++++++++++----
sysdeps/powerpc/powerpc64/strcspn.S | 127 -------------------------------
sysdeps/powerpc/powerpc64/strpbrk.S | 135 ---------------------------------
sysdeps/powerpc/powerpc64/strspn.S | 144 ------------------------------------
8 files changed, 115 insertions(+), 544 deletions(-)
delete mode 100644 sysdeps/powerpc/powerpc64/strcspn.S
delete mode 100644 sysdeps/powerpc/powerpc64/strpbrk.S
delete mode 100644 sysdeps/powerpc/powerpc64/strspn.S
--
1.9.1