• Agniva De Sarker's avatar
    strings: optimize ToLower · 65fbf0e8
    Agniva De Sarker authored
    Handling the ASCII case inline and call unicode.ToLower only
    for non-ASCII cases.
    
    Gives good improvements for the ASCII case and minor perf
    degrade for non-ASCII case
    
    name                                     old time/op    new time/op    delta
    ToLower/#00                                10.8ns ± 1%     9.0ns ± 1%  -16.83%  (p=0.008 n=5+5)
    ToLower/abc                                23.3ns ± 4%    12.6ns ± 1%  -46.01%  (p=0.008 n=5+5)
    ToLower/AbC123                             91.0ns ± 2%    70.4ns ± 0%  -22.59%  (p=0.008 n=5+5)
    ToLower/azAZ09_                             104ns ± 3%      75ns ± 1%  -28.35%  (p=0.008 n=5+5)
    ToLower/longStrinGwitHmixofsmaLLandcAps     254ns ± 4%     157ns ± 0%  -38.19%  (p=0.016 n=5+4)
    ToLower/LONGⱯSTRINGⱯWITHⱯNONASCIIⱯCHARS     446ns ± 1%     451ns ± 1%     ~     (p=0.056 n=5+5)
    ToLower/ⱭⱭⱭⱭⱭ                               345ns ± 1%     348ns ± 0%   +0.93%  (p=0.016 n=5+5)
    
    name                                     old alloc/op   new alloc/op   delta
    ToLower/#00                                 0.00B          0.00B          ~     (all equal)
    ToLower/abc                                 0.00B          0.00B          ~     (all equal)
    ToLower/AbC123                              16.0B ± 0%     16.0B ± 0%     ~     (all equal)
    ToLower/azAZ09_                             24.0B ± 0%     16.0B ± 0%  -33.33%  (p=0.008 n=5+5)
    ToLower/longStrinGwitHmixofsmaLLandcAps     80.0B ± 0%     64.0B ± 0%  -20.00%  (p=0.008 n=5+5)
    ToLower/LONGⱯSTRINGⱯWITHⱯNONASCIIⱯCHARS     96.0B ± 0%     96.0B ± 0%     ~     (all equal)
    ToLower/ⱭⱭⱭⱭⱭ                               48.0B ± 0%     48.0B ± 0%     ~     (all equal)
    
    Ran on a machine with Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
    
    Fixes #17859
    
    Change-Id: Iacc1e6b77e1aedba9447a6e94352606f131ea597
    Reviewed-on: https://go-review.googlesource.com/76470Reviewed-by: 's avatarMarvin Stenger <marvin.stenger94@gmail.com>
    Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
    65fbf0e8
strings_test.go 42.1 KB