Maison >Java >javaDidacticiel >`toArray(new MyClass[0]) vs toArray(new MyClass[myList.size()]) : lequel est le plus performant ?`

`toArray(new MyClass[0]) vs toArray(new MyClass[myList.size()]) : lequel est le plus performant ?`

DDD
DDDoriginal
2024-11-24 17:28:13447parcourir

`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Which is More 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 :

  • MyClass[] arr = myList.toArray(new MyClass[myList.size()]);
  • MyClass[] arr = myList.toArray(new MyClass[0]);

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn