Go でのマップ初期化メソッドのパフォーマンス比較: make と {}
Go では、次の 2 つの主要なメソッドを使用してマップを初期化できます。
<code class="go">var myMap map[string]int myMap = map[string]int{}</code>
対
<code class="go">myMap = make(map[string]int)</code>
これらのアプローチ間に顕著なパフォーマンスの違いがあるかどうかという疑問が生じます。
パフォーマンス評価
パフォーマンスを評価するために、カスタム テスト パッケージを使用してベンチマーク テストを実施しました。複数の実行にわたる結果は、2 つの方法間の差異が無視できる程度であることを示しました。以下はベンチマーク コードのサンプルです。
<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>
ベンチマーク結果
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
結論
これらのベンチマーク結果に基づくと、map[string]int{} を使用したマップの初期化と make(map[string] を使用したマップの初期化の間に大きなパフォーマンスの違いはありません整数)。どちらの方法も、サンプル マシンではほぼ同じパフォーマンスを示します。
以上がGo でのマップ初期化の「make」と「{}」の間にパフォーマンスの違いはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。