判断空字符串
判断字符串是否为空的常用方法如下:
str := ""
fmt.Println(str == "")
fmt.Println(len(str ) == 0)
那么通过直接判断空字符串和判断字符串长度两种方法,有什么性能区别呢
benchmark性能测试
func Test1() bool {
var v string
if v == "" {
return true
}
return false
}
func Test2() bool {
var v string
if len(v) == 0 {
return true
}
return false
}
func BenchmarkTest1(b *testing.B) {
for i := 0; i < b.N; i++ {
Test1()
}
}
func BenchmarkTest2(b *testing.B) {
for i := 0; i < b.N; i++ {
Test2()
}
}
执行编译指令:
go test --bench=. -benchmem
通过测试可以看出,几乎没有任何差距
compile编译汇编
go tool compile -S main.go
通过比对汇编代码,我们可以看出二者完全一致
结论
无论是对比性能,还是汇编代码,二者都是一致的。所以是go在编译过程中,做了特殊优化,使得二者执行完全一致。