Maison > Java > javaDidacticiel > Quel est l'impact du dimensionnement des tableaux sur les performances de conversion d'ArrayList en tableau en Java ?

Quel est l'impact du dimensionnement des tableaux sur les performances de conversion d'ArrayList en tableau en Java ?

Susan Sarandon
Libérer: 2024-11-26 08:10:11
original
472 Les gens l'ont consulté

How Does Array Sizing Impact ArrayList to Array Conversion Performance in Java?

Dimensionnement du tableau dans toArray

Lors de la conversion d'un ArrayList en tableau à l'aide de la méthode toArray, il existe deux options pour spécifier la taille du tableau : en utilisant a预先调整大小的数组或一个空的数组。 Explorons leurs implications en termes de performances.

En supposant que nous ayons un ArrayList appelé myList, nous pouvons utiliser la syntaxe suivante pour créer un tableau :

MyClass[] arr = myList.toArray(new MyClass[myList.size()]); // Presized array
MyClass[] arr = myList.toArray(new MyClass[0]); // Empty array
Copier après la connexion

Intuitivement, redimensionner le tableau peut sembler plus efficace, mais les résultats d'analyse comparative utilisant Java Microbenchmark Harness (JMH) révèlent un résultat surprenant. La création d'un tableau avec un paramètre de taille vide (nouveau MyClass[0]) surpasse systématiquement la version prédimensionnée (nouveau MyClass[myList.size()]).

Les compilateurs JVM et JIT disposent d'optimisations qui peuvent créer et initialiser des tableaux de la bonne taille. En fournissant un tableau vide, le compilateur peut profiter de ces optimisations, conduisant à de meilleures performances. Cet avantage est particulièrement visible à mesure que la taille du tableau augmente.

Voici les résultats du benchmark :

Size Presized Array (μs) Empty Array (μs)
1 0.025 0.019
100 0.155 0.133
1000 1.512 1.075
5000 6.884 5.318
10000 13.147 10.652
100000 159.977 139.692

Comme vous pouvez le constater, la méthode du tableau vide offre un avantage de performances léger mais constant. Cependant, il est important de noter que ces résultats peuvent varier en fonction des optimisations spécifiques du compilateur JVM et JIT, ainsi que de la taille et des caractéristiques de vos données.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal