• Agniva De Sarker's avatar
    strings: optimize ToUpper · 13cfb15c
    Agniva De Sarker authored
    Handling the ASCII case inline and call unicode.ToUpper 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
    ToUpper/#00                                11.7ns ± 8%     8.0ns ± 1%  -31.95%  (p=0.008 n=5+5)
    ToUpper/ONLYUPPER                          45.6ns ± 5%    19.9ns ± 1%  -56.40%  (p=0.008 n=5+5)
    ToUpper/abc                                77.4ns ± 1%    57.0ns ± 1%  -26.32%  (p=0.008 n=5+5)
    ToUpper/AbC123                             92.1ns ± 4%    67.7ns ± 2%  -26.57%  (p=0.008 n=5+5)
    ToUpper/azAZ09_                             105ns ± 6%      67ns ± 2%  -36.26%  (p=0.000 n=5+4)
    ToUpper/longStrinGwitHmixofsmaLLandcAps     255ns ± 1%     140ns ± 1%  -45.01%  (p=0.029 n=4+4)
    ToUpper/longɐstringɐwithɐnonasciiⱯchars     440ns ± 1%     447ns ± 0%   +1.49%  (p=0.016 n=5+4)
    ToUpper/ɐɐɐɐɐ                               370ns ± 4%     366ns ± 1%     ~     (p=0.667 n=5+5)
    
    name                                     old alloc/op   new alloc/op   delta
    ToUpper/#00                                 0.00B          0.00B          ~     (all equal)
    ToUpper/ONLYUPPER                           0.00B          0.00B          ~     (all equal)
    ToUpper/abc                                 16.0B ± 0%      6.0B ± 0%  -62.50%  (p=0.008 n=5+5)
    ToUpper/AbC123                              16.0B ± 0%     16.0B ± 0%     ~     (all equal)
    ToUpper/azAZ09_                             24.0B ± 0%     16.0B ± 0%  -33.33%  (p=0.008 n=5+5)
    ToUpper/longStrinGwitHmixofsmaLLandcAps     80.0B ± 0%     64.0B ± 0%  -20.00%  (p=0.008 n=5+5)
    ToUpper/longɐstringɐwithɐnonasciiⱯchars     96.0B ± 0%     96.0B ± 0%     ~     (all equal)
    ToUpper/ɐɐɐɐɐ                               64.0B ± 0%     64.0B ± 0%     ~     (all equal)
    
    Ran on a machine with Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
    
    Updates #17859
    
    Change-Id: I0735ac4a4a36e8a8f6cc06f2c16b871f12b4abf9
    Reviewed-on: https://go-review.googlesource.com/68370Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    13cfb15c
strings.go 22.7 KB