实际应用中需要判断源字符串中是否包含子字符串,目前用的是strings.Contains,使用benchmark测试,300W字符串中找出一个符合条件的数据,strings.Contains的性能在0.0449 ns/op左右,strings.Index也差不多,在0.0429 ns/op左右;大家知道还有啥更高效的方法吗?
**strings.Contains** `0.0449 ns/op` 难道还不够快吗?我的Benchmark里面什么逻辑都不写,也被甩了将近十倍的差距。啥配置这么强悍?
```go
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