Comparaison des performances des méthodes d'initialisation de carte dans Go : make vs. {}
Dans Go, les cartes peuvent être initialisées à l'aide de deux méthodes principales :
<code class="go">var myMap map[string]int myMap = map[string]int{}</code>
vs.
<code class="go">myMap = make(map[string]int)</code>
La question se pose de savoir s'il existe une différence de performance notable entre ces approches.
Évaluation des performances
Pour évaluer les performances, un test de référence a été effectué à l'aide d'un package de tests personnalisé. Les résultats sur plusieurs essais ont indiqué des différences négligeables entre les deux méthodes. Voici un exemple de code de référence :
<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>
Résultats de référence
Les résultats de référence pour trois exécutions distinctes étaient les suivants :
$ 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
Conclusion
Sur la base de ces résultats de référence, il n'y a pas de différence de performances significative entre l'initialisation de cartes à l'aide de map[string]int{} et make(map[string] int). Les deux méthodes présentent des performances presque identiques sur un exemple de machine.
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!