Maison > développement back-end > Golang > 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
Libérer: 2024-11-01 01:11:02
original
802 Les gens l'ont consulté

 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>
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal