BENCHMARK bits/string.h and bits/string2.h optimizations

Jakub Jelinek jakub@redhat.com
Thu Nov 22 13:38:00 GMT 2001


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 *


More information about the Libc-hacker mailing list