Maison  >  Article  >  développement back-end  >  Existe-t-il une différence de performances entre l'utilisation de `{}` et `make()` pour initialiser des cartes dans Go ?

Existe-t-il une différence de performances entre l'utilisation de `{}` et `make()` pour initialiser des cartes dans Go ?

DDD
DDDoriginal
2024-10-30 05:54:02537parcourir

  Is There a Performance Difference Between Using `{}` and `make()` to Initialize Maps in Go?

Initialisation de cartes dans Go : make vs. {}

Dans Go, il existe deux méthodes courantes pour initialiser des cartes : utiliser {} ou faire(). Bien qu'ils aboutissent tous deux à une carte vide, la question se pose de savoir s'il existe une différence de performances entre les deux approches.

Pour étudier cela, créons un test de référence pour comparer les deux techniques d'initialisation :

<code class="go">package main

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 = map[string]int{}
    }
    result = m
}

func BenchmarkMakeMake(b *testing.B) {
    var m map[string]int
    for n := 0; n < b.N; n++ {
        m = make(map[string]int)
    }
    result = m
}

func main() {
    testing.Benchmark(BenchmarkMakeLiteral)
    testing.Benchmark(BenchmarkMakeMake)
}</code>

L'exécution du test de référence sur différentes machines montre des résultats cohérents, indiquant qu'il n'y a pas de différence de performances significative entre les deux méthodes d'initialisation. {} et make() entraînent des temps d'exécution presque identiques.

En conclusion, bien que les méthodes {} et make() produisent toutes deux une carte vide, il n'y a aucun avantage perceptible en termes de performances lors de l'utilisation de l'une par rapport à l'autre. . Le choix entre les deux peut être basé sur des préférences personnelles ou des exigences spécifiques.

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