Beim Konvertieren einer ArrayList in ein Array mit der toArray-Methode gibt es zwei Möglichkeiten, die Größe des Arrays anzugeben: mit Lassen Sie uns ihre Auswirkungen auf die Leistung untersuchen.
Angenommen, wir haben eine ArrayList
MyClass[] arr = myList.toArray(new MyClass[myList.size()]); // Presized array MyClass[] arr = myList.toArray(new MyClass[0]); // Empty array
Intuitiv mag die Größenänderung des Arrays effizienter erscheinen, aber Benchmark-Ergebnisse mit Java Microbenchmark Harness (JMH) zeigen ein überraschendes Ergebnis. Das Erstellen eines Arrays mit einem leeren Größenparameter (neue MyClass[0]) übertrifft durchweg die vordefinierte Version (neue MyClass[myList.size()]).
Der JVM- und JIT-Compiler verfügt über Optimierungen, die effizient erstellen und erstellen können Arrays mit der richtigen Größe initialisieren. Durch die Bereitstellung eines leeren Arrays kann der Compiler diese Optimierungen nutzen, was zu einer besseren Leistung führt. Dieser Vorteil macht sich besonders bemerkbar, wenn die Array-Größe zunimmt.
Hier sind die Benchmark-Ergebnisse:
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 |
Wie Sie sehen können, bietet die leere Array-Methode einen leichten, aber konsistenten Leistungsvorteil. Es ist jedoch wichtig zu beachten, dass diese Ergebnisse je nach den spezifischen JVM- und JIT-Compiler-Optimierungen sowie der Größe und den Eigenschaften Ihrer Daten variieren können.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Array-Größe auf die Konvertierungsleistung von ArrayList in Array in Java aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!