Maison > développement back-end > Golang > le corps du texte

Existe-t-il une différence de performances entre « make » et « {} » pour l'initialisation de la carte dans Go ?

Linda Hamilton
Libérer: 2024-11-01 05:08:27
original
688 Les gens l'ont consulté

Is There a Performance Difference Between `make` and `{}` for Map Initialization in Go?

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

vs.

<code class="go">myMap = make(map[string]int)</code>
Copier après la connexion

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

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

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!