Heim >Backend-Entwicklung >Golang >Gibt es einen Leistungsunterschied zwischen der Verwendung von „{}' und „make()' zum Initialisieren von Karten in Go?

Gibt es einen Leistungsunterschied zwischen der Verwendung von „{}' und „make()' zum Initialisieren von Karten in Go?

DDD
DDDOriginal
2024-10-30 05:54:02659Durchsuche

  Is There a Performance Difference Between Using `{}` and `make()` to Initialize Maps in Go?

Karteninitialisierung in Go: make vs. {}

In Go gibt es zwei gängige Methoden zum Initialisieren von Karten: mit {} oder machen(). Während beide zu einer leeren Karte führen, stellt sich die Frage, ob es einen Leistungsunterschied zwischen den beiden Ansätzen gibt.

Um dies zu untersuchen, erstellen wir einen Benchmark-Test, um die beiden Initialisierungstechniken zu vergleichen:

<code class="go">package main

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 = map[string]int{}
    }
    result = m
}

func BenchmarkMakeMake(b *testing.B) {
    var m map[string]int
    for n := 0; n < b.N; n++ {
        m = make(map[string]int)
    }
    result = m
}

func main() {
    testing.Benchmark(BenchmarkMakeLiteral)
    testing.Benchmark(BenchmarkMakeMake)
}</code>

Das Ausführen des Benchmark-Tests auf verschiedenen Maschinen zeigt konsistente Ergebnisse, was darauf hindeutet, dass es keinen signifikanten Leistungsunterschied zwischen den beiden Initialisierungsmethoden gibt. Sowohl {} als auch make() führen zu nahezu identischen Ausführungszeiten.

Zusammenfassend lässt sich sagen, dass die Methoden {} und make() zwar beide eine leere Karte erzeugen, es jedoch keinen erkennbaren Leistungsvorteil gibt, wenn eine der Methoden gegenüber der anderen verwendet wird . Die Wahl zwischen beiden kann auf persönlichen Vorlieben oder spezifischen Anforderungen basieren.

Das obige ist der detaillierte Inhalt vonGibt es einen Leistungsunterschied zwischen der Verwendung von „{}' und „make()' zum Initialisieren von Karten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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