有比 string.Contains 更快的方法吗

LYL_GO · 2021-12-29 15:24:21 · 1983 次点击

strings.Contains 0.0449 ns/op 难道还不够快吗?我的Benchmark里面什么逻辑都不写,也被甩了将近十倍的差距。啥配置这么强悍?

func BenchmarkNoop(b *testing.B) {
    for i := 0; i < b.N; i++ {
    }
}

// goos: linux
// goarch: amd64
// pkg: xxx.com/xxx
// cpu: Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz
// BenchmarkNoop
// BenchmarkNoop-6       1000000000             0.2599 ns/op
// PASS
#6
更多评论

感觉不太容易,看了下string.Contains的源码,当substr比较小的时候,是暴力匹配的,做了汇编级别的优化;substr比较大的时候,就是字符串hash了

#1

已经这么快了,还需要多快?

#2