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 さん、どうもありがとうございました。