Array vs Slice : vitesse d'accès
Dans Go, une tranche et un tableau sont deux structures de données étroitement liées utilisées pour stocker des éléments de un type de données spécifique. Bien qu'ils partagent des similitudes, une différence clé réside dans leur vitesse d'accès, en particulier lorsque l'on compare les instances mondiales et locales.
Résultats de référence :
Pour évaluer la différence de performances, un le benchmark a été réalisé à l'aide des fonctions suivantes :
Les résultats ont systématiquement montré une vitesse d'accès plus rapide pour les tableaux globaux que pour les tranches globales. Cependant, la tranche locale a largement surpassé le tableau local.
Explication :
Pour déterminer la raison de cet écart, l'assemblage amd64 des fonctions de référence du tableau local et de la tranche a été examiné.
Cela suggère que le local slice bénéficie d'une utilisation efficace des registres, tandis que le tableau local entraîne une surcharge supplémentaire en chargeant constamment l'adresse du tableau.
De plus, la version du tableau invoque le fonction runtime.duffcopy, une longue routine d'assemblage, contrairement à la version slice. Cela contribue encore davantage à la disparité des performances.
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!