Go 中映射初始化方法的性能比较:make 与 {}
在 Go 中,可以使用两种主要方法来初始化映射:
<code class="go">var myMap map[string]int myMap = map[string]int{}</code>
与
<code class="go">myMap = make(map[string]int)</code>
问题在于这些方法之间是否存在明显的性能差异。
性能评估
为了评估性能,使用自定义测试包进行了基准测试。多次运行的结果表明两种方法之间的差异可以忽略不计。以下是示例基准代码:
<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
结论
根据这些基准测试结果,使用 map[string]int{} 和 make(map[string] 初始化映射之间没有显着的性能差异整数)。两种方法在样本机器上表现出几乎相同的性能。
以上是Go 中映射初始化的 `make` 和 `{}` 之间有性能差异吗?的详细内容。更多信息请关注PHP中文网其他相关文章!