Array.length est-il coûteux en termes de calcul ?
De nombreux développeurs ont observé un modèle dans lequel les développeurs utilisent des boucles for-each avec une longueur de tableau précalculée pour optimiser leur code. En précalculant la longueur et en la stockant dans une variable, ils évitent d'appeler la méthode length() pour les collections, ce qui entraîne une pénalité de performances. Cependant, cette optimisation s'applique-t-elle aux tableaux ?
Array.length : une opération à temps constant
Contrairement à l'intuition, appeler array.length en Java n'est pas une performance- opération intensive. Contrairement aux collections où size() implique de compter les éléments, array.length est un membre final public de l'objet tableau. Y accéder n'est pas plus lent que d'atteindre une variable locale.
Optimisation du compilateur JIT
Les compilateurs JIT modernes, tels que ceux d'OpenJDK, optimisent souvent les appels à array.length. Ils éliminent la recherche et la récupération de la propriété length, ce qui entraîne une exécution plus rapide.
Exceptions à l'optimisation
Bien que le compilateur JIT optimise généralement les appels array.length, il existe cas où il pourrait ne pas être en mesure de le faire. Ceux-ci incluent :
Confirmation
Vous pouvez vérifier ce comportement en examinant le code natif compilé JIT ou en examinant le code source du compilateur JIT dans OpenJDK. La plupart des cas présenteront des différences de performances négligeables entre l'utilisation d'une variable de longueur précalculée et l'accès direct à array.length.
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!