Maison >développement back-end >Golang >Qu'est-ce qui est le plus rapide : l'ajout de tranches ou l'affectation directe dans Golang ?
Comparaison des performances de l'ajout et de l'attribution de tranches dans Golang
Dans Golang, il existe deux manières courantes d'ajouter des éléments à une tranche : en utilisant le ajouter une fonction ou attribuer directement des valeurs aux indices de tranche. Pour comprendre les différences de performances entre ces méthodes, considérons le code suivant :
func BenchmarkSliceAppend(b *testing.B) { a := make([]int, 0, b.N) for i := 0; i < b.N; i++ { a = append(a, i) } } func BenchmarkSliceSet(b *testing.B) { a := make([]int, b.N) for i := 0; i < b.N; i++ { a[i] = i } }
Les résultats du benchmark montrent que a[i] = i surpasse considérablement a = append(a, i) en termes de temps d'exécution :
BenchmarkSliceAppend-4 200000000 7.87 ns/op 8 B/op 0 allocs/op BenchmarkSliceSet-4 300000000 5.76 ns/op 8 B/op
Raison de la différence de performances
La différence de performances provient des opérations sous-jacentes effectuées par chaque méthode. a[i] = i attribue simplement la valeur i au ième élément de la tranche, ce qui est une opération simple et efficace.
En revanche, a = append(a, i) implique un processus plus complexe :
Ceci une copie et une allocation supplémentaires contribuent à la surcharge de performances de la méthode append, ce qui entraîne un temps d'exécution plus lent par rapport à la méthode directe. affectation.
Conclusion
Pour ajouter des éléments à une tranche, a[i] = i est une option plus efficace que a = append(a, i) en raison de son fonctionnement est plus simple et plus rapide. Gardez cela à l'esprit lors de l'optimisation des performances du code pour les tâches de manipulation de tranches.
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!