Make strcmp do four byte comparisons on aligned strings.hrev44557
commitac827a2baa5e0c486b554cdee56c72624b499a40
authorFredrik Holmqvist <fredrik.holmqvist@gmail.com>
Sun, 19 Aug 2012 09:30:23 +0000 (19 11:30 +0200)
committerFredrik Holmqvist <fredrik.holmqvist@gmail.com>
Sun, 19 Aug 2012 09:39:16 +0000 (19 11:39 +0200)
tree55b430b9e5871687626804352ca63ec0e87f60bf
parenta1efcf2c7f4aed9d299e7eb2cd7a896f6a5c5ba0
Make strcmp do four byte comparisons on aligned strings.

Used libMicro's strcmp test to evaluate performance:
OPTS="-E -C 200 -S -W"
bin/strcmp $OPTS -N "strcmp_10" -s 10 -I 10
bin/strcmp $OPTS -N "strcmp_100" -s 100 -I 20
bin/strcmp $OPTS -N "strcmp_1k" -s 1k -I 50
bin/strcmp $OPTS -N "strcmp_10k" -s 10k -I 800
bin/strcmp $OPTS -N "strcmp_1m" -s 1m   -I 500000
bin/strcmp $OPTS -N "strcmp_10m" -s 10m  -I 5000000

Before:
             prc thr   usecs/call      samples   errors cnt/samp     size
strcmp_10      1   1      0.02510          201        0    10000       10
strcmp_100     1   1      0.17520          169        0     5000      100
strcmp_1k      1   1      1.67700          177        0     2000     1024
strcmp_10k     1   1     17.24800          194        0      125    10240
strcmp_1m      1   1  17892.00000          160        0        1  1048576
strcmp_10m     1   1 183136.00000          201        0        1 10485760

After:
strcmp_10      1   1      0.01800          194        0    10000       10
strcmp_100     1   1      0.13540          190        0     5000      100
strcmp_1k      1   1      1.24950          188        0     2000     1024
strcmp_10k     1   1     12.85600          190        0      125    10240
strcmp_1m      1   1  12930.00000          170        0        1  1048576
strcmp_10m     1   1 134382.00000          195        0        1 10485760
src/system/libroot/posix/string/strcmp.c