在Golang中,使用make vs {}初始化的地图之间是否有任何性能差异
发布时间:2020-12-16 19:03:07 所属栏目:大数据 来源:网络整理
导读:我们知道有两种方法可以初始化地图(如下所示).我想知道这两种方法之间是否存在任何性能差异. var myMap map[string]int 然后 myMap = map[string]int{} VS myMap = make(map[string]int) 在我的机器上,它们看起来大致相当. 您可以轻松地进行基准测试以进行比
我们知道有两种方法可以初始化地图(如下所示).我想知道这两种方法之间是否存在任何性能差异.
var myMap map[string]int 然后 myMap = map[string]int{} VS myMap = make(map[string]int)
在我的机器上,它们看起来大致相当.
您可以轻松地进行基准测试以进行比较.例如: package bench import "testing" var result map[string]int func BenchmarkMakeLiteral(b *testing.B) { var m map[string]int for n := 0; n < b.N; n++ { m = InitMapLiteral() } result = m } func BenchmarkMakeMake(b *testing.B) { var m map[string]int for n := 0; n < b.N; n++ { m = InitMapMake() } result = m } func InitMapLiteral() map[string]int { return map[string]int{} } func InitMapMake() map[string]int { return make(map[string]int) } 在3次不同的运行中产生的结果足够接近无关紧要: 第一次运行 $go test -bench=. testing: warning: no tests to run PASS BenchmarkMakeLiteral-8 10000000 160 ns/op BenchmarkMakeMake-8 10000000 171 ns/op ok github.com/johnweldon/bench 3.664s 第二轮 $go test -bench=. testing: warning: no tests to run PASS BenchmarkMakeLiteral-8 10000000 182 ns/op BenchmarkMakeMake-8 10000000 173 ns/op ok github.com/johnweldon/bench 3.945s 第三次运行 $go test -bench=. testing: warning: no tests to run PASS BenchmarkMakeLiteral-8 10000000 170 ns/op BenchmarkMakeMake-8 10000000 170 ns/op ok github.com/johnweldon/bench 3.751s (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |