Maison >développement back-end >Golang >Tableaux ou tranches : qu'est-ce qui offre un accès plus rapide aux éléments ?
Array vs Slice : vitesse d'accès
On suppose souvent que les tableaux sont plus rapides que les tranches pour accéder aux éléments. Cependant, les tests d'analyse comparative révèlent un résultat surprenant : les tranches locales surpassent les tableaux locaux.
Le test a évalué quatre fonctions : accéder aux tranches et aux tableaux globaux et locaux. En analysant les résultats, les tranches globales étaient en effet légèrement plus lentes que les tableaux globaux, ce qui correspond aux attentes. Cependant, les tranches locales ont largement surpassé les tableaux locaux.
Raison
En examinant l'assemblage amd64 pour les fonctions de référence de tableau local et de tranche, une différence notable apparaît. La version tableau charge à plusieurs reprises l'adresse du tableau en mémoire lors des opérations d'accès au tableau, tandis que la version tranche effectue des calculs exclusivement sur les registres après un chargement depuis la mémoire une fois.
Conclusion
Cela indique que l'étape supplémentaire impliquée dans l'accès aux éléments d'une tranche (en déréférençant le tableau sous-jacent) n'est pas un goulot d'étranglement significatif pour les variables locales. Dans ce scénario, les tranches offrent un accès plus rapide grâce à une utilisation plus efficace des registres. Il convient de noter que ce résultat peut ne pas être vrai pour les grands tableaux ou tranches ou lorsqu'il est transmis en tant qu'arguments de fonction.
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!