glibc/string
Wilco Dijkstra 5625f666ce This patch cleans up the strsep implementation and improves performance.
Currently strsep calls strpbrk is is now a veneer to strcspn.  Calling
strcspn directly is faster.  Since it handles a delimiter string of size
1 as a special case, this is not needed in strsep itself.  Although this
means there is a slightly higher overhead if the delimiter size is 1,
all other cases are slightly faster.  The overall performance gain is 5-10%
on AArch64.

The string/bits/string2.h header contains optimizations for constant
delimiters of size 1-3.  Benchmarking these showed similar performance for
size 1 (since in all cases strchr/strchrnul is used), while size 2 and 3
can give up to 2x speedup for small input strings.  However if these cases
are common it seems much better to add this optimization to strcspn.
So move these header optimizations to string-inlines.c.

Improve the strsep benchmark so that it actually benchmarks something.
The current version contains a delimiter character at every position in the
input string, so there is very little work to do, and the extremely inefficent
simple_strsep implementation appears fastest in every case.  The new version
has either no match in the input for the fail case and a match halfway in the
input for the success case.  The input is then restored so that each iteration
does exactly the same amount of work.  Reduce the number of testcases since
simple_strsep takes a lot of time now.

	* benchtests/bench-strsep.c (oldstrsep): Add old implementation.
	(do_one_test) Restore original string so iteration works.
	* string/string-inlines.c (do_test): Create better input strings.
	(test_main) Reduce number of testruns.
	* string/string-inlines.c (__old_strsep_1c): New function.
	(__old_strsep_2c): Likewise.
	(__old_strsep_3c): Likewise.
	* string/strsep.c (__strsep): Remove case of small delim string.
	Call strcspn directly rather than strpbrk.
	* string/bits/string2.h (__strsep): Remove define.
	(__strsep_1c): Remove.
	(__strsep_2c): Remove.
	(__strsep_3c): Remove.
	(strsep): Remove.
	* sysdeps/unix/sysv/linux/internal_statvfs.c
	(__statvfs_getflags): Rename to __strsep.
2016-12-21 15:16:29 +00:00
..
bits This patch cleans up the strsep implementation and improves performance. 2016-12-21 15:16:29 +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
explicit_bzero.c New string function explicit_bzero (from OpenBSD). 2016-12-16 16:21:54 -05: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 Do not require memset elimination in explicit_bzero test 2016-12-20 11:08:10 +01: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 This patch cleans up the strsep implementation and improves performance. 2016-12-21 15:16:29 +00:00
string.h New string function explicit_bzero (from OpenBSD). 2016-12-16 16:21:54 -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 This patch cleans up the strsep implementation and improves performance. 2016-12-21 15:16:29 +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-explicit_bzero.c New string function explicit_bzero (from OpenBSD). 2016-12-16 16:21:54 -05: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 Fix typos and missing closing bracket in test-memchr.c 2016-12-16 14:37:54 -02: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 New string function explicit_bzero (from OpenBSD). 2016-12-16 16:21:54 -05: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
tst-xbzero-opt.c Do not require memset elimination in explicit_bzero test 2016-12-20 11:08:10 +01:00
Versions New string function explicit_bzero (from OpenBSD). 2016-12-16 16:21:54 -05: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