• erifan01's avatar
    internal/bytealg: optimize Index (substring lengths from 9 to 32) on arm64 · f8ef6ed2
    erifan01 authored
    The current code is not optimized for cases where the length of the
    substring to be searched is between 9 bytes and 32 bytes. This CL
    optimizes the situations.
    
    Benchmark:
    name                             old time/op  new time/op  delta
    pkg:strings goos:linux goarch:arm64
    IndexHard1-8                     1.06ms ± 0%  1.06ms ± 0%   -0.44%  (p=0.000 n=7+8)
    IndexHard2-8                     1.25ms ± 1%  1.26ms ± 2%     ~     (p=0.328 n=8+8)
    IndexHard3-8                     2.85ms ± 1%  1.18ms ± 1%  -58.59%  (p=0.000 n=8+8)
    IndexHard4-8                     2.90ms ± 1%  2.87ms ± 1%   -0.96%  (p=0.021 n=8+8)
    
    pkg:bytes goos:linux goarch:arm64
    IndexByte/4M-8                      726124.200000ns +- 6%     560021.400000ns +-20%  -22.88%  (p=0.008 n=5+5)
    IndexRune/4M-8                      928768.600000ns +- 0%     793144.600000ns +- 6%  -14.60%  (p=0.008 n=5+5)
    
    Change-Id: Ieebeb784ae69b2a0642ea96e9486a1d120923568
    Reviewed-on: https://go-review.googlesource.com/109895Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    f8ef6ed2
Name
Last commit
Last update
..
bytealg.go Loading commit data...
compare_386.s Loading commit data...
compare_amd64.s Loading commit data...
compare_amd64p32.s Loading commit data...
compare_arm.s Loading commit data...
compare_arm64.s Loading commit data...
compare_generic.go Loading commit data...
compare_mipsx.s Loading commit data...
compare_native.go Loading commit data...
compare_ppc64x.s Loading commit data...
compare_s390x.s Loading commit data...
count_amd64.s Loading commit data...
count_arm64.s Loading commit data...
count_generic.go Loading commit data...
count_native.go Loading commit data...
equal_386.s Loading commit data...
equal_amd64.s Loading commit data...
equal_amd64p32.s Loading commit data...
equal_arm.s Loading commit data...
equal_arm64.s Loading commit data...
equal_mips64x.s Loading commit data...
equal_mipsx.s Loading commit data...
equal_native.go Loading commit data...
equal_ppc64x.s Loading commit data...
equal_s390x.s Loading commit data...
index_amd64.go Loading commit data...
index_amd64.s Loading commit data...
index_arm64.go Loading commit data...
index_arm64.s Loading commit data...
index_generic.go Loading commit data...
index_native.go Loading commit data...
index_s390x.go Loading commit data...
index_s390x.s Loading commit data...
indexbyte_386.s Loading commit data...
indexbyte_amd64.s Loading commit data...
indexbyte_amd64p32.s Loading commit data...
indexbyte_arm.s Loading commit data...
indexbyte_arm64.s Loading commit data...
indexbyte_generic.go Loading commit data...
indexbyte_mips64x.s Loading commit data...
indexbyte_mipsx.s Loading commit data...
indexbyte_native.go Loading commit data...
indexbyte_ppc64x.s Loading commit data...
indexbyte_s390x.s Loading commit data...