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
MyClass[] arr = myList.toArray(new MyClass[myList.size()]); // Presized array MyClass[] arr = myList.toArray(new MyClass[0]); // Empty array
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!