• Christophe Leroy's avatar
    powerpc/lib: Implement strlen() in assembly for PPC32 · 9412b234
    Christophe Leroy authored
    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: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    9412b234
string.h 1.77 KB