• Ilya Tocar's avatar
    runtime: optimize string comparison on amd64 · 967564be
    Ilya Tocar authored
    Use AVX2 if possible.
    Results below (haswell):
    
    name                            old time/op    new time/op     delta
    CompareStringEqual-6              8.77ns ± 0%     8.63ns ± 1%   -1.58%        (p=0.000 n=20+19)
    CompareStringIdentical-6          5.02ns ± 0%     5.02ns ± 0%     ~     (all samples are equal)
    CompareStringSameLength-6         7.51ns ± 0%     7.51ns ± 0%     ~     (all samples are equal)
    CompareStringDifferentLength-6    1.56ns ± 0%     1.56ns ± 0%     ~     (all samples are equal)
    CompareStringBigUnaligned-6        124µs ± 1%      105µs ± 5%  -14.99%        (p=0.000 n=20+18)
    CompareStringBig-6                 112µs ± 1%      103µs ± 0%   -7.87%        (p=0.000 n=20+17)
    
    name                            old speed      new speed       delta
    CompareStringBigUnaligned-6     8.48GB/s ± 1%   9.98GB/s ± 5%  +17.67%        (p=0.000 n=20+18)
    CompareStringBig-6              9.37GB/s ± 1%  10.17GB/s ± 0%   +8.54%        (p=0.000 n=20+17)
    
    Change-Id: I1c949626dd2aaf9f633e3c888a9df71c82eed7e1
    Reviewed-on: https://go-review.googlesource.com/16481Reviewed-by: default avatarKeith Randall <khr@golang.org>
    Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarKlaus Post <klauspost@gmail.com>
    967564be
a.out.go 9.41 KB