Maison >Java >javaDidacticiel >`toArray(new MyClass[0]) vs toArray(new MyClass[myList.size()]) : lequel est le plus performant ?`
toArray(new MyClass[0]) ou toArray(new MyClass[myList.size()]) Implications en termes de performances
Lors de la conversion d'un ArrayList à un tableau, les développeurs peuvent choisir entre deux approches :
Alors que la deuxième option est moins verbeux, il soulève des questions sur d'éventuelles considérations en matière de performances.
Benchmark Analyse
Pour déterminer l'impact sur les performances, des tests de performances ont été effectués à l'aide de JMH sur Hotspot 8. Les résultats ont révélé que l'utilisation d'un tableau vide surpasse systématiquement le prédimensionnement du tableau :
Benchmark (n) Mode Samples Score Error Units c.a.p.SO29378922.preSize 1 avgt 30 0.025 ▒ 0.001 us/op c.a.p.SO29378922.preSize 100 avgt 30 0.155 ▒ 0.004 us/op ... c.a.p.SO29378922.resize 100 avgt 30 0.133 ▒ 0.003 us/op c.a.p.SO29378922.resize 1000 avgt 30 1.075 ▒ 0.022 us/op ...
Explication
Cette découverte contre-intuitive peut être attribuée aux optimisations utilisées par le compilateur JVM et JIT. Ces optimisations permettent la création et l'initialisation efficaces de tableaux correctement dimensionnés sans avoir besoin des dimensions fournies par l'utilisateur.
Recommandation
Sur la base des résultats et des analyses de référence, il est recommandé d'utiliser :
MyClass[] arr = myList.toArray(new MyClass[0]);
Cela améliore non seulement les performances, mais s'aligne également sur le principe consistant à laisser la JVM optimiser les opérations courantes telles que la création de tableaux.
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!