Heim > Artikel > Backend-Entwicklung > Gibt es einen Leistungsunterschied zwischen „make“ und „{}“ für die Karteninitialisierung in Go?
Leistungsvergleich der Karteninitialisierungsmethoden in Go: make vs. {}
In Go können Karten mit zwei Hauptmethoden initialisiert werden:
<code class="go">var myMap map[string]int myMap = map[string]int{}</code>
vs.
<code class="go">myMap = make(map[string]int)</code>
Es stellt sich die Frage, ob zwischen diesen Ansätzen ein spürbarer Leistungsunterschied besteht.
Leistungsbewertung
Um die Leistung zu bewerten, wurde ein Benchmark-Test mit einem benutzerdefinierten Testpaket durchgeführt. Die Ergebnisse mehrerer Durchläufe zeigten vernachlässigbare Unterschiede zwischen den beiden Methoden. Das Folgende ist ein Beispiel für einen Benchmark-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>
Benchmark-Ergebnisse
Die Benchmark-Ergebnisse für drei separate Läufe waren wie folgt:
$ 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
Fazit
Basierend auf diesen Benchmark-Ergebnissen gibt es keinen signifikanten Leistungsunterschied zwischen der Initialisierung von Karten mit map[string]int{} und make(map[string] int). Beide Methoden zeigen auf einer Beispielmaschine eine nahezu identische Leistung.
Das obige ist der detaillierte Inhalt vonGibt es einen Leistungsunterschied zwischen „make“ und „{}“ für die Karteninitialisierung in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!