strings.EqualFold はどの程度の速度か

strings.EqualFold について言及がなかったので、測ってみました。

追加行:

func isDevNull4(name string) bool {
    return strings.EqualFold(name,"nul")
}
func BenchmarkS4(b *testing.B) {
    test(b, isDevNull4)
}

結果:

$ go test -bench .
goos: windows
goarch: amd64
BenchmarkS1-4           50000000                29.5 ns/op
BenchmarkS2-4           50000000                29.1 ns/op
BenchmarkS3-4             200000              9844 ns/op
BenchmarkS4-4           20000000               101 ns/op

自分的には「なんか、まぁまぁ速かったけど、速すぎるので、何かミスってる可能性大」と思っていたんですが、「そんなもんだと思います」とのコメントをいただきました。

まぁ、考えてみれば、S3 で使われている strings.ToLower(name) == "nul" は文字列の領域確保とインスタンス作成が入っているため、この結果は当然かもしれません。

mattn さん、どうもありがとうございました。