Maison > développement back-end > Golang > Go Slices : ajouter ou copier pour une copie approfondie – Quel est le plus efficace ?

Go Slices : ajouter ou copier pour une copie approfondie – Quel est le plus efficace ?

Mary-Kate Olsen
Libérer: 2024-12-10 21:00:15
original
607 Les gens l'ont consulté

Go Slices:  Append vs. Copy for Deep Copying – Which is More Efficient?

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

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

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

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!

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