Maison > développement back-end > Golang > Est-il toujours plus rapide d'utiliser la copie au lieu d'ajouter sur une tranche ?

Est-il toujours plus rapide d'utiliser la copie au lieu d'ajouter sur une tranche ?

PHPz
Libérer: 2024-02-12 14:21:06
avant
517 Les gens l'ont consulté

Est-il toujours plus rapide dutiliser la copie au lieu dajouter sur une tranche ?

Contenu de la question

Lors de la croissance itérative d'une tranche, il est facile de comprendre pourquoi allouer la taille en premier (si elle est connue) est plus efficace que d'utiliser la fonction append, car cette dernière décidera à chaque itération d'augmenter ou non la taille. de la capacité des tranches. Mais je suis curieux de savoir si l'utilisation de la forme variadique supplémentaire est moins efficace que l'utilisation de la construction make/copy lors de la concaténation de deux grandes tranches de manière non itérative. Par exemple (en supposant que sl1 et sl2 sont de type []int)

sl = append(sl, sl2...)
Copier après la connexion

Comparaison

nsl = make([]int, len(sl) + len(sl2))
i := copy(nsl, sl)
copy(nsl[i], sl2)
sl = nsl
Copier après la connexion

J'aurais pensé que le premier formulaire (plus lisible) fonctionnerait toujours, car je m'attendais à ce qu'il n'y ait toujours qu'un changement de capacité (en fonction du nombre d'arguments de l'appel d'ajout). Ai-je raison de le penser ?

Solution

appendcopy Utilisez les mêmes primitives de copie sous-jacentes.

Si la tranche cible a une capacité suffisante, appendaucune mémoire ne sera allouée.

append Le code est plus facile à lire.

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:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal