summaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/powerpc
diff options
context:
space:
mode:
authorChristophe Leroy2018-08-01 11:01:14 +0200
committerMichael Ellerman2018-08-07 13:49:30 +0200
commit9412b234501eef1d273cc759387a232f0027c574 (patch)
treefe37ba51c94c5a3f18b885000f8aa4cb589fbd31 /tools/testing/selftests/powerpc
parentselftests/powerpc: Add test for strlen() (diff)
downloadkernel-qcow2-linux-9412b234501eef1d273cc759387a232f0027c574.tar.gz
kernel-qcow2-linux-9412b234501eef1d273cc759387a232f0027c574.tar.xz
kernel-qcow2-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 'tools/testing/selftests/powerpc')
0 files changed, 0 insertions, 0 deletions