Go では、「make」と「{}」を使用して初期化されたマップ間のパフォーマンスのギャップを明らかにします
Go では、開発者は柔軟性を備えています「make」構文と「{} 構文」の 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>
このベンチマークを複数回実行すると、実質的に同等であることを示す結果が得られます。パフォーマンス:
$ 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 中国語 Web サイトの他の関連記事を参照してください。