Heim >Backend-Entwicklung >Golang >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 irgendwelche Leistungsunterschiede zwischen diesen gibt Ansätze.
Um die Leistung zu vergleichen, kann ein Benchmark-Test erstellt werden, um die Zeit zu messen, 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>
Das mehrmalige Ausführen dieses Benchmarks führt zu Ergebnissen, die darauf hindeuten, dass sie hinsichtlich der Leistung praktisch gleichwertig sind:
$ 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 zeigt an, dass im Durchschnitt der Leistungsunterschied zwischen den Initialisierungen besteht Karten mit der Syntax „make“ vs. „{} sind vernachlässigbar und können als im Wesentlichen gleichwertig angesehen werden.
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!