In Go, dévoilement de l'écart de performances entre les cartes initialisées à l'aide de "make" vs "{}"
In Go, les développeurs ont la flexibilité pour initialiser les cartes de deux manières : la syntaxe "make" et "{}. Cela soulève naturellement la question de savoir s'il existe des différences de performances entre ces approches.
Pour comparer les performances, un test de référence peut être créé pour mesurer le temps nécessaire pour initialiser une carte en utilisant les deux méthodes. Le test de référence fourni, comme indiqué ci-dessous, illustre ceci :
<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>
L'exécution de ce benchmark à plusieurs reprises donne des résultats qui suggèrent qu'ils sont pratiquement équivalents en termes de performances :
$ 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
Cela indique qu'en moyenne, la différence de performances entre l'initialisation des cartes l'utilisation de la syntaxe "make" vs "{} est négligeable et peut être considérée comme essentiellement équivalente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!