Hi!
As gcc3 vastly improved and extended builtin stringops optimizations, I'd
like to open the question of which bits/string.h resp. bits/string2.h
optimizations should be disabled for gcc3+ or gcc3.1+.
Attached is a small program + Makefile which tests some stringops
optimizations which bits/string.h and bits/string2.h are trying to do.
Attached are results of running these tests on i686 with -O2 -mcpu=i686
and -O2 -mcpu=i686 -fPIC with trunk gcc.
In the output, gcc means gcc builtins without glibc inlines, nob means the
-fno-builtin without gcc inlines, str means bits/string.h optimizations and
str2 bits/string2.h opts.
Lines marked with * are where gcc is at least as fast as all the others, or
better.
If similar results prove on other arches, IMHO at least string2.h (strcpy, strncat,
strncpy, memset, strstr) are good candidates for
#if !__GNUC_PREREQ(3, 0)
resp. 3,1 depending on whether the same results are found in 3.0 or not.
Jakub
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tester.tar.bz2
Type: application/octet-stream
Size: 3139 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-hacker/attachments/20011122/37e968d7/attachment.obj>
-------------- next part --------------
gcc nob str str2
memcpy
(0,a,1) 3 51 3 3 *
(0,a,2) 3 51 12 3 *
(0,ab,3) 3 51 4 3 *
(0,abc,4) 4 51 4 4 *
(0,abcd,5) 3 58 36 3 *
(0,abcde,6) 4 58 6 4 *
(0,abcdef,7) 9 58 39 9 *
(0,abcdefg,8) 4 58 20 4 *
(0,quitelongstring,0) 2 51 2 2 *
(0,quitelongstring,1) 3 51 3 3 *
(0,quitelongstring,2) 4 51 3 4
(0,quitelongstring,3) 3 51 4 3 *
(0,quitelongstring,4) 3 51 4 3 *
(0,quitelongstring,5) 8 58 36 8 *
(0,quitelongstring,6) 4 58 6 4 *
(0,quitelongstring,7) 9 58 39 9 *
(0,quitelongstring,8) 4 58 4 4 *
(5,a,1) 3 51 3 3 *
(5,a,2) 4 51 12 4 *
(5,ab,3) 3 51 4 3 *
(5,abc,4) 3 51 4 3 *
(5,abcd,5) 8 58 36 8 *
(5,abcde,6) 4 58 6 4 *
(5,abcdef,7) 9 58 39 9 *
(5,abcdefg,8) 4 58 20 4 *
(5,quitelongstring,0) 2 51 2 2 *
(5,quitelongstring,1) 3 51 3 3 *
(5,quitelongstring,2) 3 51 3 3 *
(5,quitelongstring,3) 8 51 4 8
(5,quitelongstring,4) 3 51 4 3 *
(5,quitelongstring,5) 3 58 36 3 *
(5,quitelongstring,6) 4 58 6 4 *
(5,quitelongstring,7) 9 58 39 9 *
(5,quitelongstring,8) 4 58 4 4 *
memmove
(0,a,1) 54 54 60 54 *
(0,a,2) 54 54 60 54 *
(0,ab,3) 54 54 60 54 *
(0,abc,4) 54 54 60 54 *
(0,abcd,5) 61 61 68 61 *
(0,abcde,6) 61 61 68 61 *
(0,abcdef,7) 61 61 68 61 *
(0,abcdefg,8) 94 94 68 94
(0,quitelongstring,0) 54 54 60 54 *
(0,quitelongstring,1) 54 54 60 54 *
(0,quitelongstring,2) 54 54 60 54 *
(0,quitelongstring,3) 54 54 60 54 *
(0,quitelongstring,4) 54 54 60 54 *
(0,quitelongstring,5) 61 61 68 61 *
(0,quitelongstring,6) 61 61 68 61 *
(0,quitelongstring,7) 61 61 68 61 *
(0,quitelongstring,8) 94 94 68 94
(5,a,1) 54 54 57 54 *
(5,a,2) 54 54 58 54 *
(5,ab,3) 54 54 58 54 *
(5,abc,4) 54 54 58 54 *
(5,abcd,5) 61 61 65 61 *
(5,abcde,6) 61 61 65 61 *
(5,abcdef,7) 61 61 65 61 *
(5,abcdefg,8) 94 94 65 94
(5,quitelongstring,0) 54 54 59 54 *
(5,quitelongstring,1) 54 54 57 54 *
(5,quitelongstring,2) 54 54 58 54 *
(5,quitelongstring,3) 54 54 58 54 *
(5,quitelongstring,4) 54 54 58 54 *
(5,quitelongstring,5) 61 61 65 61 *
(5,quitelongstring,6) 61 61 65 61 *
(5,quitelongstring,7) 61 61 65 61 *
(5,quitelongstring,8) 94 94 65 94
mempcpy
(0,a,1) 52 52 3 3
(0,a,2) 52 52 3 4
(0,ab,3) 52 52 3 3
(0,abc,4) 52 52 4 3
(0,abcd,5) 59 59 3 8
(0,abcde,6) 59 59 4 4
(0,abcdef,7) 59 59 9 9
(0,abcdefg,8) 59 59 4 4
(0,quitelongstring,0) 52 52 2 2
(0,quitelongstring,1) 52 52 3 3
(0,quitelongstring,2) 52 52 4 3
(0,quitelongstring,3) 52 52 3 8
(0,quitelongstring,4) 52 52 3 3
(0,quitelongstring,5) 59 59 8 3
(0,quitelongstring,6) 59 59 4 4
(0,quitelongstring,7) 59 59 9 9
(0,quitelongstring,8) 59 59 4 4
(5,a,1) 52 52 3 3
(5,a,2) 52 52 4 3
(5,ab,3) 52 52 3 8
(5,abc,4) 52 52 3 3
(5,abcd,5) 59 59 8 3
(5,abcde,6) 59 59 4 4
(5,abcdef,7) 59 59 9 9
(5,abcdefg,8) 59 59 4 4
(5,quitelongstring,0) 52 52 2 2
(5,quitelongstring,1) 52 52 3 3
(5,quitelongstring,2) 52 52 3 3
(5,quitelongstring,3) 52 52 8 3
(5,quitelongstring,4) 52 52 3 4
(5,quitelongstring,5) 59 59 3 3
(5,quitelongstring,6) 59 59 4 4
(5,quitelongstring,7) 59 59 9 9
(5,quitelongstring,8) 59 59 4 4
memset
(0,0,0) 2 79 2 2 *
(0,0,1) 2 79 2 2 *
(0,0,10) 6 79 29 6 *
(0,0,11) 7 79 35 7 *
(0,0,12) 6 79 28 6 *
(0,0,13) 7 79 29 7 *
(0,0,14) 7 79 29 7 *
(0,0,15) 7 79 35 7 *
(0,0,16) 7 79 28 7 *
(0,0,2) 3 79 3 3 *
(0,0,3) 4 79 4 4 *
(0,0,4) 3 79 3 3 *
(0,0,5) 4 79 29 4 *
(0,0,6) 4 79 29 4 *
(0,0,7) 9 79 35 9 *
(0,0,8) 4 79 28 4 *
(0,0,9) 9 79 29 9 *
(0,32,0) 2 79 2 2 *
(0,32,1) 2 79 2 2 *
(0,32,10) 8 79 30 8 *
(0,32,11) 6 79 35 6 *
(0,32,12) 8 79 29 8 *
(0,32,13) 6 79 30 6 *
(0,32,14) 6 76 30 6 *
(0,32,15) 6 79 35 6 *
(0,32,16) 7 79 29 7 *
(0,32,2) 3 79 3 3 *
(0,32,3) 3 79 3 3 *
(0,32,4) 3 79 3 3 *
(0,32,5) 3 79 30 3 *
(0,32,6) 4 79 30 4 *
(0,32,7) 9 79 35 9 *
(0,32,8) 4 79 29 4 *
(0,32,9) 9 79 30 9 *
(5,0,0) 2 79 2 2 *
(5,0,1) 2 79 2 2 *
(5,0,10) 6 79 29 6 *
(5,0,11) 7 79 35 7 *
(5,0,12) 6 79 28 6 *
(5,0,13) 7 79 29 7 *
(5,0,14) 7 79 29 7 *
(5,0,15) 7 79 35 7 *
(5,0,16) 7 79 28 7 *
(5,0,2) 3 79 3 3 *
(5,0,3) 4 79 4 4 *
(5,0,4) 3 79 3 3 *
(5,0,5) 4 79 29 4 *
(5,0,6) 4 79 29 4 *
(5,0,7) 9 79 35 9 *
(5,0,8) 4 79 28 4 *
(5,0,9) 9 79 29 9 *
(5,32,0) 2 79 2 2 *
(5,32,1) 2 79 2 2 *
(5,32,10) 8 79 30 8 *
(5,32,11) 6 79 35 6 *
(5,32,12) 8 79 29 8 *
(5,32,13) 6 79 30 6 *
(5,32,14) 7 79 30 7 *
(5,32,15) 6 79 35 6 *
(5,32,16) 6 79 29 6 *
(5,32,2) 4 79 4 4 *
(5,32,3) 3 79 3 3 *
(5,32,4) 3 79 3 3 *
(5,32,5) 3 79 30 3 *
(5,32,6) 4 79 30 4 *
(5,32,7) 9 79 35 9 *
(5,32,8) 4 79 29 4 *
(5,32,9) 9 79 30 9 *
stpcpy
(0,NUL) 42 42 135 3
(0,a) 42 42 138 3
(0,ab) 31 31 150 8
(0,abc) 46 46 147 3
(0,abcd) 56 56 153 3
(0,abcde) 55 55 153 4
(0,abcdef) 60 60 159 9
(0,abcdefg) 63 63 166 4
(5,NUL) 42 42 138 3
(5,a) 42 42 139 3
(5,ab) 31 31 162 3
(5,abc) 46 46 147 4
(5,abcd) 56 56 160 3
(5,abcde) 55 55 164 4
(5,abcdef) 60 60 181 9
(5,abcdefg) 63 63 167 4
strchr
(0,0,0) 82 82 83 61
(0,0,65) 84 84 85 84 *
(5,0,0) 78 78 63 52
(5,0,65) 80 80 64 80
(abcde,0) 2 67 47 45 *
(abcde,67) 2 69 49 2 *
(abcdefghij,12) 2 79 69 2 *
(abcdefghij,70) 2 79 69 2 *
strcmp
(0,a) 50 19 28 3
(0,ab) 50 19 28 3
(0,abc) 50 19 28 3
(0,abcd) 50 19 28 50
(0,abcde) 50 19 28 50
(0,abcdef) 50 19 28 50
(5,a) 55 23 40 4
(5,ab) 55 23 50 5
(5,abc) 55 23 50 5
(5,abcd) 55 23 50 55
(5,abcde) 55 23 50 55
(5,abcdef) 55 23 40 55
(NUL,NUL) 2 19 29 2 *
(NUL,abcd) 2 19 28 2 *
(a,0) 50 19 28 4
(a,5) 55 23 50 3
(a,a) 2 23 51 2 *
(ab,0) 50 19 28 4
(ab,5) 55 23 50 6
(ab,abcd) 2 27 59 2 *
(abc,0) 50 19 28 4
(abc,5) 55 23 40 6
(abcd,0) 50 19 28 50
(abcd,5) 55 23 50 55
(abcd,NUL) 2 19 28 2 *
(abcd,abc) 2 31 69 2 *
(abcd,abcd) 2 35 71 50 *
(abcde,0) 50 19 28 50
(abcde,5) 55 23 50 55
(abcdef,0) 50 19 28 50
(abcdef,5) 55 23 50 55
strcpy
(0,NUL) 3 42 20 3 *
(0,a) 3 42 33 3 *
(0,ab) 8 31 40 3
(0,abc) 3 45 53 4 *
(0,abcd) 3 56 57 3 *
(0,abcde) 4 55 52 4 *
(0,abcdef) 9 60 56 9 *
(0,abcdefg) 4 63 61 4 *
(5,NUL) 3 42 20 3 *
(5,a) 3 42 33 4 *
(5,ab) 3 31 46 3 *
(5,abc) 4 45 53 3
(5,abcd) 3 56 57 8 *
(5,abcde) 4 55 52 4 *
(5,abcdef) 9 60 56 9 *
(5,abcdefg) 4 63 61 4 *
strcspn
(0,NUL) 26 126 304 27 *
(0,a) 106 106 196 28
(0,ab) 110 110 221 33
(0,abcd) 119 119 252 119 *
(0,aln) 110 110 157 17
(0,tal) 112 112 185 27
(5,NUL) 56 113 219 56 *
(5,a) 93 93 101 6
(5,ab) 99 99 106 7
(5,abcd) 107 107 112 107 *
(5,aln) 106 106 110 7
(5,tal) 106 106 114 7
(abc,c) 2 99 150 14 *
(abcdef,fed) 2 112 194 27 *
(abcdefghijk,fi) 2 110 221 30 *
strncat
(0,a,2) 52 70 120 52 *
(0,a,3) 52 70 120 52 *
(0,ab,4) 54 73 136 54 *
(0,abc,5) 63 77 140 63 *
(0,abcd,6) 56 79 154 56 *
(0,abcde,7) 76 85 149 76 *
(0,abcdef,8) 61 85 152 61 *
(0,quitelongstring,0) 2 69 118 2 *
(0,quitelongstring,1) 70 70 119 70 *
(0,quitelongstring,2) 76 76 131 76 *
(0,quitelongstring,3) 79 79 136 79 *
(0,quitelongstring,4) 80 80 138 80 *
(0,quitelongstring,5) 81 81 142 81 *
(0,quitelongstring,6) 88 88 146 88 *
(0,quitelongstring,7) 91 91 150 91 *
(0,quitelongstring,8) 90 90 155 90 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 124 238 358 124 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 164 164 245 164 *
(5,a,2) 50 60 98 50 *
(5,a,3) 50 60 98 50 *
(5,ab,4) 54 63 114 54 *
(5,abc,5) 63 67 128 63 *
(5,abcd,6) 55 69 132 55 *
(5,abcde,7) 75 75 127 75 *
(5,abcdef,8) 62 72 130 62 *
(5,quitelongstring,0) 2 59 96 2 *
(5,quitelongstring,1) 60 60 97 60 *
(5,quitelongstring,2) 66 66 100 66 *
(5,quitelongstring,3) 69 69 114 69 *
(5,quitelongstring,4) 70 70 120 70 *
(5,quitelongstring,5) 71 71 120 71 *
(5,quitelongstring,6) 78 78 124 78 *
(5,quitelongstring,7) 79 79 128 79 *
(5,quitelongstring,8) 80 80 133 80 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 123 224 336 123 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 154 154 223 154 *
strncpy
(0,a,2) 3 37 38 3 *
(0,a,3) 3 41 38 3 *
(0,ab,4) 4 41 44 4 *
(0,abc,5) 3 43 46 3 *
(0,abcd,6) 4 48 50 4 *
(0,abcde,7) 9 52 67 9 *
(0,abcdef,8) 4 51 71 4 *
(0,quitelongstring,0) 2 29 17 2 *
(0,quitelongstring,1) 3 32 31 3 *
(0,quitelongstring,2) 4 37 35 4 *
(0,quitelongstring,3) 3 42 37 3 *
(0,quitelongstring,4) 3 41 42 3 *
(0,quitelongstring,5) 8 44 48 8 *
(0,quitelongstring,6) 4 48 52 4 *
(0,quitelongstring,7) 9 53 57 9 *
(0,quitelongstring,8) 4 51 61 4 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 284 284 406 284 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 12 118 149 12 *
(5,a,2) 4 37 38 4 *
(5,a,3) 3 41 38 3 *
(5,ab,4) 3 41 44 3 *
(5,abc,5) 8 43 46 8 *
(5,abcd,6) 4 48 50 4 *
(5,abcde,7) 9 52 67 9 *
(5,abcdef,8) 4 51 71 4 *
(5,quitelongstring,0) 2 29 17 2 *
(5,quitelongstring,1) 3 32 31 3 *
(5,quitelongstring,2) 3 37 25 3 *
(5,quitelongstring,3) 8 42 37 8 *
(5,quitelongstring,4) 3 41 42 3 *
(5,quitelongstring,5) 3 44 48 3 *
(5,quitelongstring,6) 4 48 52 4 *
(5,quitelongstring,7) 9 53 57 9 *
(5,quitelongstring,8) 4 51 61 4 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 284 284 406 284 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 18 118 149 18 *
strpbrk
(0,NUL) 2 127 304 3 *
(0,ab) 111 111 224 33
(0,abcd) 119 119 255 119 *
(0,i) 55 95 104 55 *
(0,int) 106 106 113 16
(5,NUL) 2 115 219 3 *
(5,ab) 99 99 109 11
(5,abcd) 107 107 115 107 *
(5,i) 52 99 142 52 *
(5,int) 113 113 163 26
(abc,c) 2 99 153 52 *
(abcdef,fed) 2 114 197 37 *
(abcdefghijk,fi) 2 111 223 33 *
strspn
(0,NUL) 2 90 69 2 *
(0,ab) 99 99 84 8
(0,abcd) 107 107 96 107
(0,i) 96 96 127 10
(0,int) 119 119 321 24
(5,NUL) 2 90 69 2 *
(5,ab) 101 101 126 12
(5,abcd) 109 109 138 109 *
(5,i) 93 93 76 5
(5,int) 106 106 91 9
(abc,c) 2 93 76 3 *
(abcdef,fed) 2 106 91 8 *
(abcdefghijk,fi) 2 99 84 7 *
strstr
(0,a) 65 61 299 65 *
(0,ion) 98 98 584 98 *
(0,on) 88 88 598 88 *
(0,tion) 94 94 550 94 *
(5,a) 44 31 80 44 *
(5,ion) 69 69 354 69 *
(5,on) 74 74 383 74 *
(5,tion) 82 82 315 82 *
(NUL,NUL) 2 26 76 2 *
(NUL,a) 2 27 110 2 *
(NUL,ab) 2 27 115 2 *
(NUL,abc) 2 27 119 2 *
(a,NUL) 2 26 73 2 *
(a,a) 2 31 84 2 *
(ab,NUL) 2 26 73 2 *
(abc,NUL) 2 26 73 2 *
(abc,c) 2 37 160 2 *
(abcdef,def) 2 55 220 2 *
(abcdef,ef) 2 54 254 2 *
-------------- next part --------------
gcc nob str str2
memcpy
(0,a,1) 14 48 23 14 *
(0,a,2) 16 49 29 16 *
(0,ab,3) 17 48 24 17 *
(0,abc,4) 14 48 23 14 *
(0,abcd,5) 15 56 52 15 *
(0,abcde,6) 17 56 26 17 *
(0,abcdef,7) 18 56 55 18 *
(0,abcdefg,8) 15 56 31 15 *
(0,quitelongstring,0) 10 48 18 10 *
(0,quitelongstring,1) 14 48 23 14 *
(0,quitelongstring,2) 16 48 23 16 *
(0,quitelongstring,3) 17 48 24 17 *
(0,quitelongstring,4) 14 48 23 14 *
(0,quitelongstring,5) 15 56 52 15 *
(0,quitelongstring,6) 17 56 26 17 *
(0,quitelongstring,7) 18 56 55 18 *
(0,quitelongstring,8) 15 56 24 15 *
(5,a,1) 16 50 25 16 *
(5,a,2) 17 50 31 17 *
(5,ab,3) 18 50 26 18 *
(5,abc,4) 16 66 25 16 *
(5,abcd,5) 15 57 53 15 *
(5,abcde,6) 22 57 25 22 *
(5,abcdef,7) 23 57 57 23 *
(5,abcdefg,8) 15 57 38 15 *
(5,quitelongstring,0) 10 50 20 10 *
(5,quitelongstring,1) 16 50 25 16 *
(5,quitelongstring,2) 17 50 25 17 *
(5,quitelongstring,3) 18 50 26 18 *
(5,quitelongstring,4) 16 50 25 16 *
(5,quitelongstring,5) 15 57 53 15 *
(5,quitelongstring,6) 22 57 25 22 *
(5,quitelongstring,7) 23 57 57 23 *
(5,quitelongstring,8) 15 57 26 15 *
memmove
(0,a,1) 52 52 64 52 *
(0,a,2) 54 54 76 54 *
(0,ab,3) 52 52 86 52 *
(0,abc,4) 52 52 66 52 *
(0,abcd,5) 60 60 77 60 *
(0,abcde,6) 60 60 77 60 *
(0,abcdef,7) 60 60 77 60 *
(0,abcdefg,8) 94 94 77 94
(0,quitelongstring,0) 52 52 74 52 *
(0,quitelongstring,1) 52 52 64 52 *
(0,quitelongstring,2) 52 52 76 52 *
(0,quitelongstring,3) 52 52 69 52 *
(0,quitelongstring,4) 52 52 69 52 *
(0,quitelongstring,5) 60 60 77 60 *
(0,quitelongstring,6) 60 60 77 60 *
(0,quitelongstring,7) 60 60 77 60 *
(0,quitelongstring,8) 94 94 77 94
(5,a,1) 54 54 64 54 *
(5,a,2) 54 54 75 54 *
(5,ab,3) 54 54 69 54 *
(5,abc,4) 72 72 69 72
(5,abcd,5) 62 62 80 62 *
(5,abcde,6) 62 62 77 62 *
(5,abcdef,7) 62 62 77 62 *
(5,abcdefg,8) 94 94 77 94
(5,quitelongstring,0) 54 54 75 54 *
(5,quitelongstring,1) 54 54 64 54 *
(5,quitelongstring,2) 54 54 75 54 *
(5,quitelongstring,3) 54 54 69 54 *
(5,quitelongstring,4) 54 54 69 54 *
(5,quitelongstring,5) 62 62 77 62 *
(5,quitelongstring,6) 62 62 77 62 *
(5,quitelongstring,7) 62 62 77 62 *
(5,quitelongstring,8) 94 94 77 94
mempcpy
(0,a,1) 49 49 44 44
(0,a,2) 49 49 47 49
(0,ab,3) 49 49 47 47
(0,abc,4) 49 49 37 37
(0,abcd,5) 57 57 34 34
(0,abcde,6) 57 57 29 29
(0,abcdef,7) 57 57 27 27
(0,abcdefg,8) 57 57 15 15
(0,quitelongstring,0) 49 49 12 12
(0,quitelongstring,1) 49 49 14 14
(0,quitelongstring,2) 49 49 20 20
(0,quitelongstring,3) 49 49 20 20
(0,quitelongstring,4) 49 49 14 14
(0,quitelongstring,5) 57 57 14 14
(0,quitelongstring,6) 57 57 22 22
(0,quitelongstring,7) 57 57 22 22
(0,quitelongstring,8) 57 57 15 15
(5,a,1) 51 51 44 44
(5,a,2) 51 51 48 48
(5,ab,3) 51 51 48 48
(5,abc,4) 67 67 40 40
(5,abcd,5) 58 58 34 34
(5,abcde,6) 58 58 29 29
(5,abcdef,7) 58 58 26 26
(5,abcdefg,8) 58 58 15 15
(5,quitelongstring,0) 51 51 12 12
(5,quitelongstring,1) 51 51 14 14
(5,quitelongstring,2) 51 51 20 20
(5,quitelongstring,3) 51 51 20 20
(5,quitelongstring,4) 51 51 17 17
(5,quitelongstring,5) 57 58 17 17
(5,quitelongstring,6) 58 58 22 22
(5,quitelongstring,7) 58 58 22 22
(5,quitelongstring,8) 58 58 15 15
memset
(0,0,0) 10 78 12 10 *
(0,0,1) 13 78 14 13 *
(0,0,10) 17 78 42 17 *
(0,0,11) 18 78 46 18 *
(0,0,12) 16 78 42 16 *
(0,0,13) 17 78 42 17 *
(0,0,14) 18 78 42 18 *
(0,0,15) 19 78 46 19 *
(0,0,16) 17 78 42 17 *
(0,0,2) 16 78 20 16 *
(0,0,3) 18 78 20 18 *
(0,0,4) 14 78 14 14 *
(0,0,5) 15 78 42 15 *
(0,0,6) 17 78 42 17 *
(0,0,7) 18 78 46 18 *
(0,0,8) 15 78 42 15 *
(0,0,9) 16 78 42 16 *
(0,32,0) 10 78 12 10 *
(0,32,1) 13 78 14 13 *
(0,32,10) 17 78 43 17 *
(0,32,11) 18 78 44 18 *
(0,32,12) 16 78 42 16 *
(0,32,13) 17 78 43 17 *
(0,32,14) 18 78 43 18 *
(0,32,15) 19 78 44 19 *
(0,32,16) 17 78 42 17 *
(0,32,2) 16 78 20 16 *
(0,32,3) 18 78 20 18 *
(0,32,4) 14 78 14 14 *
(0,32,5) 15 78 43 15 *
(0,32,6) 17 78 43 17 *
(0,32,7) 18 78 44 18 *
(0,32,8) 15 78 42 15 *
(0,32,9) 16 78 43 16 *
(5,0,0) 10 78 12 10 *
(5,0,1) 16 78 16 16 *
(5,0,10) 17 78 45 17 *
(5,0,11) 18 78 47 18 *
(5,0,12) 16 78 44 16 *
(5,0,13) 17 78 45 17 *
(5,0,14) 18 78 45 18 *
(5,0,15) 19 78 47 19 *
(5,0,16) 17 78 44 17 *
(5,0,2) 17 78 20 17 *
(5,0,3) 17 78 20 17 *
(5,0,4) 16 78 15 16
(5,0,5) 15 78 45 15 *
(5,0,6) 22 78 45 22 *
(5,0,7) 23 78 47 23 *
(5,0,8) 15 78 44 15 *
(5,0,9) 16 78 45 16 *
(5,32,0) 10 78 12 10 *
(5,32,1) 16 78 16 16 *
(5,32,10) 17 78 45 17 *
(5,32,11) 18 78 47 18 *
(5,32,12) 16 78 45 16 *
(5,32,13) 17 78 45 17 *
(5,32,14) 18 78 45 18 *
(5,32,15) 19 78 47 19 *
(5,32,16) 17 78 45 17 *
(5,32,2) 17 78 20 17 *
(5,32,3) 17 78 20 17 *
(5,32,4) 16 78 15 16
(5,32,5) 15 78 45 15 *
(5,32,6) 22 78 45 22 *
(5,32,7) 23 78 47 23 *
(5,32,8) 15 78 45 15 *
(5,32,9) 16 78 45 16 *
stpcpy
(0,NUL) 49 49 141 50 *
(0,a) 57 57 146 46
(0,ab) 35 35 161 43 *
(0,abc) 53 53 158 39
(0,abcd) 63 63 160 38
(0,abcde) 61 61 166 30
(0,abcdef) 67 67 168 27
(0,abcdefg) 70 70 167 15
(5,NUL) 49 49 142 51 *
(5,a) 49 49 161 46
(5,ab) 35 35 162 44 *
(5,abc) 53 53 160 39
(5,abcd) 71 71 189 39
(5,abcde) 61 61 173 30
(5,abcdef) 67 67 167 26
(5,abcdefg) 70 70 168 15
strchr
(0,0,0) 86 86 92 61
(0,0,65) 88 88 96 88 *
(5,0,0) 83 83 75 56
(5,0,65) 86 86 76 86
(abcde,0) 10 69 56 47 *
(abcde,67) 0 71 59 0 *
(abcdefghij,12) 0 81 79 0 *
(abcdefghij,70) 0 81 79 0 *
strcmp
(0,a) 62 21 39 11
(0,ab) 62 21 39 11
(0,abc) 62 21 39 11
(0,abcd) 62 21 39 62
(0,abcde) 62 21 39 62
(0,abcdef) 62 21 39 62
(5,a) 75 29 53 12
(5,ab) 69 29 53 14
(5,abc) 69 29 53 14
(5,abcd) 69 29 53 69
(5,abcde) 69 29 53 69
(5,abcdef) 69 29 53 69
(NUL,NUL) 0 23 39 10 *
(NUL,abcd) 0 21 38 10 *
(a,0) 62 21 39 12
(a,5) 75 26 53 13
(a,a) 0 30 50 10 *
(ab,0) 62 21 39 12
(ab,5) 69 26 53 14
(ab,abcd) 0 29 60 10 *
(abc,0) 62 21 39 12
(abc,5) 69 26 53 14
(abcd,0) 62 21 39 62
(abcd,5) 69 26 53 69
(abcd,NUL) 0 21 38 10 *
(abcd,abc) 0 33 71 10 *
(abcd,abcd) 0 39 83 59 *
(abcde,0) 62 21 39 62
(abcde,5) 69 26 53 69
(abcdef,0) 62 21 39 62
(abcdef,5) 69 26 53 69
strcpy
(0,NUL) 14 49 26 50 *
(0,a) 16 57 31 48 *
(0,ab) 17 35 31 43 *
(0,abc) 14 52 34 39 *
(0,abcd) 15 63 38 38 *
(0,abcde) 17 61 55 23 *
(0,abcdef) 18 67 59 23 *
(0,abcdefg) 15 70 64 16 *
(5,NUL) 16 49 28 50 *
(5,a) 17 49 30 46 *
(5,ab) 18 35 33 42 *
(5,abc) 16 52 54 40 *
(5,abcd) 15 71 41 38 *
(5,abcde) 22 61 57 23 *
(5,abcdef) 23 67 61 25 *
(5,abcdefg) 15 70 65 16 *
strcspn
(0,NUL) 33 127 317 35 *
(0,a) 108 108 211 31
(0,ab) 112 112 234 37
(0,abcd) 120 120 267 120 *
(0,aln) 111 111 158 30
(0,tal) 116 116 200 34
(5,NUL) 61 116 229 61 *
(5,a) 96 96 109 16
(5,ab) 102 102 114 16
(5,abcd) 110 110 120 110 *
(5,aln) 108 108 118 16
(5,tal) 108 108 123 16
(abc,c) 0 98 165 19 *
(abcdef,fed) 0 114 222 32 *
(abcdefghijk,fi) 0 110 234 35 *
strncat
(0,a,2) 54 72 122 54 *
(0,a,3) 54 72 122 54 *
(0,ab,4) 56 75 142 56 *
(0,abc,5) 62 80 152 62 *
(0,abcd,6) 63 82 157 63 *
(0,abcde,7) 96 117 173 96 *
(0,abcdef,8) 63 88 158 63 *
(0,quitelongstring,0) 10 71 125 10 *
(0,quitelongstring,1) 75 75 121 75 *
(0,quitelongstring,2) 78 78 127 78 *
(0,quitelongstring,3) 81 81 141 81 *
(0,quitelongstring,4) 83 83 146 83 *
(0,quitelongstring,5) 84 84 151 84 *
(0,quitelongstring,6) 91 91 156 91 *
(0,quitelongstring,7) 94 94 161 94 *
(0,quitelongstring,8) 93 93 166 93 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 120 241 413 120 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 167 167 276 167 *
(5,a,2) 52 62 104 52 *
(5,a,3) 52 62 104 52 *
(5,ab,4) 55 65 133 55 *
(5,abc,5) 65 67 125 65 *
(5,abcd,6) 67 71 128 67 *
(5,abcde,7) 97 105 160 97 *
(5,abcdef,8) 62 76 138 62 *
(5,quitelongstring,0) 10 61 104 10 *
(5,quitelongstring,1) 62 62 111 62 *
(5,quitelongstring,2) 68 68 116 68 *
(5,quitelongstring,3) 71 71 121 71 *
(5,quitelongstring,4) 69 69 123 69 *
(5,quitelongstring,5) 72 72 127 72 *
(5,quitelongstring,6) 79 79 132 79 *
(5,quitelongstring,7) 82 82 136 82 *
(5,quitelongstring,8) 82 82 141 82 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 129 229 343 129 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 155 155 230 155 *
strncpy
(0,a,2) 16 42 47 16 *
(0,a,3) 17 45 47 17 *
(0,ab,4) 14 43 49 14 *
(0,abc,5) 15 46 50 15 *
(0,abcd,6) 17 52 56 17 *
(0,abcde,7) 18 55 70 18 *
(0,abcdef,8) 15 55 74 15 *
(0,quitelongstring,0) 10 30 24 10 *
(0,quitelongstring,1) 14 34 28 14 *
(0,quitelongstring,2) 16 38 32 16 *
(0,quitelongstring,3) 17 43 35 17 *
(0,quitelongstring,4) 14 43 38 14 *
(0,quitelongstring,5) 15 46 49 15 *
(0,quitelongstring,6) 17 51 53 17 *
(0,quitelongstring,7) 18 56 58 18 *
(0,quitelongstring,8) 15 55 62 15 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 291 291 407 291 *
(0,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 20 121 150 20 *
(5,a,2) 17 38 50 17 *
(5,a,3) 18 42 50 18 *
(5,ab,4) 16 42 52 16 *
(5,abc,5) 15 62 65 15 *
(5,abcd,6) 22 50 59 22 *
(5,abcde,7) 23 54 72 23 *
(5,abcdef,8) 15 55 76 15 *
(5,quitelongstring,0) 10 30 26 10 *
(5,quitelongstring,1) 16 33 30 16 *
(5,quitelongstring,2) 17 38 34 17 *
(5,quitelongstring,3) 18 43 37 18 *
(5,quitelongstring,4) 16 43 40 16 *
(5,quitelongstring,5) 15 46 52 15 *
(5,quitelongstring,6) 22 50 56 22 *
(5,quitelongstring,7) 23 55 61 23 *
(5,quitelongstring,8) 15 53 65 15 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,100) 294 294 410 294 *
(5,reallyhugeverylongstringwhichisinfactlongerthanthelastone,30) 25 124 153 25 *
strpbrk
(0,NUL) 0 128 316 10 *
(0,ab) 112 112 234 45
(0,abcd) 120 120 266 120 *
(0,i) 59 97 111 59 *
(0,int) 111 111 120 19
(5,NUL) 0 118 239 10 *
(5,ab) 102 102 121 21
(5,abcd) 110 110 127 110 *
(5,i) 57 102 161 57 *
(5,int) 115 115 182 30
(abc,c) 10 99 155 54 *
(abcdef,fed) 10 113 210 36 *
(abcdefghijk,fi) 10 110 236 40 *
strspn
(0,NUL) 0 92 83 10 *
(0,ab) 101 101 99 18
(0,abcd) 109 109 112 109 *
(0,i) 98 98 127 15
(0,int) 119 119 331 39
(5,NUL) 0 93 83 10 *
(5,ab) 106 106 131 21
(5,abcd) 113 113 143 113 *
(5,i) 96 96 91 14
(5,int) 108 108 109 19
(abc,c) 0 93 91 11 *
(abcdef,fed) 0 105 109 15 *
(abcdefghijk,fi) 0 99 100 13 *
strstr
(0,a) 69 58 297 69 *
(0,ion) 104 104 592 104 *
(0,on) 88 88 608 88 *
(0,tion) 95 95 560 95 *
(5,a) 49 33 95 49 *
(5,ion) 70 70 366 70 *
(5,on) 73 73 397 73 *
(5,tion) 81 81 326 81 *
(NUL,NUL) 10 28 86 10 *
(NUL,a) 0 29 120 0 *
(NUL,ab) 0 29 125 0 *
(NUL,abc) 0 29 129 0 *
(a,NUL) 10 28 85 10 *
(a,a) 10 33 94 10 *
(ab,NUL) 10 28 85 10 *
(abc,NUL) 10 28 85 10 *
(abc,c) 10 37 170 10 *
(abcdef,def) 10 54 230 10 *
(abcdef,ef) 10 54 266 10 *