Maison  >  Article  >  développement back-end  >  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
PHPzavant
2024-02-12 14:21:06472parcourir

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...)

Comparaison

nsl = make([]int, len(sl) + len(sl2))
i := copy(nsl, sl)
copy(nsl[i], sl2)
sl = nsl

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer