• 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
index_arm64.go 722 Bytes