diff options
author | Christophe Leroy <christophe.leroy@c-s.fr> | 2018-08-01 11:01:14 +0200 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2018-08-07 13:49:30 +0200 |
commit | 9412b234501eef1d273cc759387a232f0027c574 (patch) | |
tree | fe37ba51c94c5a3f18b885000f8aa4cb589fbd31 /scripts/Lindent | |
parent | selftests/powerpc: Add test for strlen() (diff) | |
download | linux-9412b234501eef1d273cc759387a232f0027c574.tar.xz linux-9412b234501eef1d273cc759387a232f0027c574.zip |
powerpc/lib: Implement strlen() in assembly for PPC32
The generic implementation of strlen() reads strings byte per byte.
This patch implements strlen() in assembly based on a read of entire
words, in the same spirit as what some other arches and glibc do.
On a 8xx the time spent in strlen is reduced by 3/4 for long strings.
strlen() selftest on an 8xx provides the following values:
Before the patch (ie with the generic strlen() in lib/string.c):
len 256 : time = 1.195055
len 016 : time = 0.083745
len 008 : time = 0.046828
len 004 : time = 0.028390
After the patch:
len 256 : time = 0.272185 ==> 78% improvment
len 016 : time = 0.040632 ==> 51% improvment
len 008 : time = 0.033060 ==> 29% improvment
len 004 : time = 0.029149 ==> 2% degradation
On a 832x:
Before the patch:
len 256 : time = 0.236125
len 016 : time = 0.018136
len 008 : time = 0.011000
len 004 : time = 0.007229
After the patch:
len 256 : time = 0.094950 ==> 60% improvment
len 016 : time = 0.013357 ==> 26% improvment
len 008 : time = 0.010586 ==> 4% improvment
len 004 : time = 0.008784
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'scripts/Lindent')
0 files changed, 0 insertions, 0 deletions