Heim > Backend-Entwicklung > Golang > Gibt es einen Leistungsunterschied zwischen „make' und „{}' beim Initialisieren von Karten in Go?

Gibt es einen Leistungsunterschied zwischen „make' und „{}' beim Initialisieren von Karten in Go?

Barbara Streisand
Freigeben: 2024-11-01 01:11:02
Original
800 Leute haben es durchsucht

 Is There a Performance Difference Between

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

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

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!

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