Maison >développement back-end >Golang >Go Slices : ajouter ou copier pour une copie approfondie – Quel est le plus efficace ?
Copie approfondie efficace des tranches
Dans Go, la création d'une copie approfondie d'une tranche implique la réplication de son contenu dans un emplacement mémoire distinct. Cela garantit que toute modification apportée à une tranche n'affecte pas l'autre.
Une approche de la copie approfondie consiste à utiliser la fonction d'ajout :
copy := append([]T{}, orig...)
Ici, l'origine de la tranche d'origine est ajoutée à une tranche vide, créant une nouvelle copie de tranche avec son propre tableau de support.
Une méthode alternative utilise la copie intégrée function :
cpy := make([]T, len(orig)) copy(cpy, orig)
Cette approche copie directement les éléments de orig vers une tranche cpy nouvellement créée.
Les deux solutions copient efficacement les valeurs dans la tranche. Cependant, il est important de noter que si la tranche contient des pointeurs ou des structures avec des champs de pointeur, ces valeurs de pointeur feront toujours référence aux mêmes emplacements que dans la tranche d'origine.
L'analyse comparative des deux méthodes donne des performances comparables :
BenchmarkCopy 100000 24724 ns/op BenchmarkAppend 100000 24967 ns/op
Le code assembleur révèle que l'ajout et la copie effectuent probablement un remplissage à zéro de la mémoire dans le cadre de leur opérations.
En fin de compte, le choix entre les méthodes d’ajout et de copie dépend des préférences individuelles et des considérations de performances. Cependant, les deux approches copient efficacement les tranches en profondeur, garantissant l'intégrité des données lorsque vous travaillez avec des instances distinctes de données de tranche.
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!