在 Go 中,揭示使用“make”与“{}”初始化的映射之间的性能差距
在 Go 中,开发人员具有灵活性通过两种方式初始化映射:“make”和“{} 语法。这自然会提出这些方法之间是否存在性能差异的问题。
为了比较性能,可以创建一个基准测试来使用这两种方法测量初始化地图所需的时间,如下所示,所提供的基准测试说明了这一点:
<code class="go">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) }</code>
多次运行此基准测试所产生的结果表明它们实际上在以下方面是等效的:性能:
$ 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
这表明,平均而言,使用“make”与“{} 语法初始化映射之间的性能差异可以忽略不计,可以认为本质上是等效的。
以上是Go 中初始化映射的“make”和“{}”之间有性能差异吗?的详细内容。更多信息请关注PHP中文网其他相关文章!