• Ilya Tocar's avatar
    strings: add asm version of Index() for short strings on amd64 · 95333aea
    Ilya Tocar authored
    Currently we have special case for 1-byte strings,
    This extends this to strings shorter than 32 bytes on amd64.
    Results (broadwell):
    
    name                 old time/op  new time/op  delta
    IndexRune-4          57.4ns ± 0%  57.5ns ± 0%   +0.10%        (p=0.000 n=20+19)
    IndexRuneFastPath-4  20.4ns ± 0%  20.4ns ± 0%     ~     (all samples are equal)
    Index-4              21.0ns ± 0%  21.8ns ± 0%   +3.81%        (p=0.000 n=20+20)
    LastIndex-4          7.07ns ± 1%  6.98ns ± 0%   -1.21%        (p=0.000 n=20+16)
    IndexByte-4          18.3ns ± 0%  18.3ns ± 0%     ~     (all samples are equal)
    IndexHard1-4         1.46ms ± 0%  0.39ms ± 0%  -73.06%        (p=0.000 n=16+16)
    IndexHard2-4         1.46ms ± 0%  0.30ms ± 0%  -79.55%        (p=0.000 n=18+18)
    IndexHard3-4         1.46ms ± 0%  0.66ms ± 0%  -54.68%        (p=0.000 n=19+19)
    LastIndexHard1-4     1.46ms ± 0%  1.46ms ± 0%   -0.01%        (p=0.036 n=18+20)
    LastIndexHard2-4     1.46ms ± 0%  1.46ms ± 0%     ~           (p=0.588 n=19+19)
    LastIndexHard3-4     1.46ms ± 0%  1.46ms ± 0%     ~           (p=0.283 n=17+20)
    IndexTorture-4       11.1µs ± 0%  11.1µs ± 0%   +0.01%        (p=0.000 n=18+17)
    
    Change-Id: I892781549f558f698be4e41f9f568e3d0611efb5
    Reviewed-on: https://go-review.googlesource.com/16430Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
    95333aea
strings_amd64.go 1.12 KB