Heim  >  Artikel  >  Backend-Entwicklung  >  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
Barbara StreisandOriginal
2024-11-01 01:11:02710Durchsuche

 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 Leistungsunterschiede zwischen diesen Ansätzen gibt.

Um die Leistung zu vergleichen, kann ein Benchmark-Test erstellt werden Messen Sie die Zeit, 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>

Die mehrmalige Ausführung dieses Benchmarks führt zu Ergebnissen, die darauf hindeuten, dass sie in Bezug auf praktisch gleichwertig sind Leistung:

$ 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 weist darauf hin, dass der Leistungsunterschied zwischen der Initialisierung von Karten mit der Syntax „make“ und der Syntax „{} im Durchschnitt vernachlässigbar ist und als im Wesentlichen gleichwertig angesehen werden kann.

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!

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