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中文網其他相關文章!