Maison  >  Article  >  développement back-end  >  Existe-t-il une différence de performances entre \"make\" et \"{}\" pour l'initialisation de cartes dans Go ?

Existe-t-il une différence de performances entre \"make\" et \"{}\" pour l'initialisation de cartes dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 01:11:02714parcourir

 Is There a Performance Difference Between

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn