glibc/string
Wilco Dijkstra d58ab810a6 Improve strtok and strtok_r performance. Instead of calling strpbrk which
calls strcspn, call strcspn directly so we get the end of the token without
an extra call to rawmemchr.  Also avoid an unnecessary call to strcspn after
the last token by adding an early exit for an empty string.  Change strtok
to tailcall strtok_r to avoid unnecessary code duplication.

Remove the special header optimization for strtok_r of a 1-character
constant string - both strspn and strcspn contain optimizations for this
case.  Benchmarking this showed similar performance in the worst case,
but up to 5.5x better performance in the "found" case for large inputs.

	* benchtests/bench-strtok.c (oldstrtok): Add old implementation.
	* string/strtok.c (strtok): Change to tailcall __strtok_r.
	* string/strtok_r.c (__strtok_r): Optimize for performance.
	* string/string-inlines.c (__old_strtok_r_1c): New function.
	* string/bits/string2.h (__strtok_r): Move to string-inlines.c.
2016-12-14 15:12:18 +00:00
..
bits Improve strtok and strtok_r performance. Instead of calling strpbrk which 2016-12-14 15:12:18 +00:00
_strerror.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-addsep.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-append.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-count.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-create.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-ctsep.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-delete.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-extract.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-insert.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-next.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-replace.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz-stringify.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
argz.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
basename.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
bcopy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
bug-envz1.c * string/Makefile (tests): Add bug-envz1. 2006-06-04 16:36:04 +00:00
bug-strcoll1.c Update. 2001-04-26 20:45:18 +00:00
bug-strcoll2.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
bug-strncat1.c * malloc/memusagestat.c (main): Use return instead of exit to 2000-12-31 10:52:32 +00:00
bug-strpbrk1.c * malloc/memusagestat.c (main): Use return instead of exit to 2000-12-31 10:52:32 +00:00
bug-strspn1.c * malloc/memusagestat.c (main): Use return instead of exit to 2000-12-31 10:52:32 +00:00
bug-strtok1.c [BZ #2126] 2006-01-10 00:25:07 +00:00
byteswap.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
bzero.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Depend Update. 2001-03-19 21:40:15 +00:00
endian.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
envz.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
envz.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
ffs.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
ffsll.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
inl-tester.c Update. 1997-09-11 12:09:10 +00:00
Makefile string: More tests for strcmp, strcasecmp, strncmp, strncasecmp 2016-08-26 14:28:46 +02:00
memccpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memcmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memcpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memfrob.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memmem.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memmove.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memory.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
mempcpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memrchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
memset.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
noinl-tester.c Update. 1997-09-16 00:42:43 +00:00
rawmemchr.c Improve generic rawmemchr for targets that don't have an 2016-12-14 13:16:13 +00:00
stpcpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
stpncpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
str-two-way.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
stratcliff.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcasecmp_l.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcasecmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcasestr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcat.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strchrnul.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcoll_l.c Bug 20729: Fix building with -Os. 2016-10-29 23:50:56 -04:00
strcoll.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strcspn.c Use PTR_ALIGN_DOWN on strcspn and strspn 2016-04-01 18:33:03 -03:00
strdup.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strerror_l.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strerror.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strfry.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
string-inlines.c Improve strtok and strtok_r performance. Instead of calling strpbrk which 2016-12-14 15:12:18 +00:00
string.h Correct comments in string.h re strcoll_l, strxfrm_l. 2016-11-16 14:18:32 -05:00
strings.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strlen.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strncase_l.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strncase.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strncat.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strncmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strncpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strndup.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strnlen.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strpbrk.c Improve generic strpbrk performance 2016-04-01 10:44:45 -03:00
strrchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strsep.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strsignal.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strspn.c Use PTR_ALIGN_DOWN on strcspn and strspn 2016-04-01 18:33:03 -03:00
strstr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strtok_r.c Improve strtok and strtok_r performance. Instead of calling strpbrk which 2016-12-14 15:12:18 +00:00
strtok.c Improve strtok and strtok_r performance. Instead of calling strpbrk which 2016-12-14 15:12:18 +00:00
strverscmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strxfrm_l.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
strxfrm.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
swab.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-bcopy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-bzero.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-ffs.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-memccpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-memchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-memcmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-memcpy.c Clear destination buffer updated by the previous run 2016-05-18 05:51:59 -07:00
test-memmem.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-memmove.c Clear destination buffer updated by the previous run 2016-05-18 05:51:59 -07:00
test-mempcpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-memrchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-memset.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-rawmemchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-stpcpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-stpncpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strcasecmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strcasestr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strcat.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strchrnul.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strcmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strcpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strcspn.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-string.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strlen.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strncasecmp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strncat.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strncmp.c Fix wide-char testsuite SIGBUS on platforms such as Sparc. 2016-08-02 17:46:58 -07:00
test-strncpy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strnlen.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strpbrk.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strrchr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strspn.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
test-strstr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
testcopy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tester.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-bswap.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-cmp.c string: More tests for strcmp, strcasecmp, strncmp, strncasecmp 2016-08-26 14:28:46 +02:00
tst-endian.c S390: Fix build failure in test string/tst-endian.c with gcc 6. 2016-01-25 12:44:46 +01:00
tst-inlcall.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-strcoll-overflow.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-strfry.c * stdlib/random_r.c (__initstate_r): Don't use non-existing state. 2005-04-12 15:29:07 +00:00
tst-strlen.c Modify several tests to use test-skeleton.c 2015-08-06 02:59:04 -04:00
tst-strtok_r.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-strtok.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-strxfrm2.c Let 'make check subdirs=string' succeed even when it's invoked 2015-09-28 16:55:57 -04:00
tst-strxfrm.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-svc2.c [BZ #9893] 2009-03-14 23:57:33 +00:00
tst-svc.c Modify several tests to use test-skeleton.c 2015-08-06 02:59:04 -04:00
tst-svc.expect * string/strverscmp.c (__strverscmp): Fix last cleanups. 2009-04-07 06:51:59 +00:00
tst-svc.input * string/strverscmp.c (__strverscmp): Fix last cleanups. 2009-04-07 06:51:59 +00:00
Versions Improve generic strcspn performance 2016-04-01 10:44:40 -03:00
wordcopy.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
xpg-strerror.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00