Heim > Backend-Entwicklung > Golang > Gibt es einen Leistungsunterschied zwischen „make' und „{}' für die Karteninitialisierung in Go?

Gibt es einen Leistungsunterschied zwischen „make' und „{}' für die Karteninitialisierung in Go?

Linda Hamilton
Freigeben: 2024-11-01 05:08:27
Original
779 Leute haben es durchsucht

Is There a Performance Difference Between `make` and `{}` for Map Initialization 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>
Nach dem Login kopieren

vs.

<code class="go">myMap = make(map[string]int)</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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
Nach dem Login kopieren
$ 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
Nach dem Login kopieren
$ 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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage