Heim > Artikel > Backend-Entwicklung > Gibt es einen Leistungsunterschied zwischen „make“ und „{}“ beim Initialisieren von Karten in Go?
In Go wird die Leistungslücke zwischen Maps aufgedeckt, die mit „make“ vs. „{}“ initialisiert wurden.
In Go haben Entwickler die Flexibilität um Karten auf zwei Arten zu initialisieren: „make“ und „{} Syntax. Dies wirft natürlich die Frage auf, ob es Leistungsunterschiede zwischen diesen Ansätzen gibt.
Um die Leistung zu vergleichen, kann ein Benchmark-Test erstellt werden Messen Sie die Zeit, die zum Initialisieren einer Karte mit beiden Methoden benötigt wird. Der bereitgestellte Benchmark-Test, wie unten gezeigt, veranschaulicht dies:
<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>
Die mehrmalige Ausführung dieses Benchmarks führt zu Ergebnissen, die darauf hindeuten, dass sie in Bezug auf praktisch gleichwertig sind Leistung:
$ 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
Dies weist darauf hin, dass der Leistungsunterschied zwischen der Initialisierung von Karten mit der Syntax „make“ und der Syntax „{} im Durchschnitt vernachlässigbar ist und als im Wesentlichen gleichwertig angesehen werden kann.
Das obige ist der detaillierte Inhalt vonGibt es einen Leistungsunterschied zwischen „make“ und „{}“ beim Initialisieren von Karten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!