Heim >Java >javaLernprogramm >`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Was ist leistungsfähiger?`
toArray(new MyClass[0]) oder toArray(new MyClass[myList.size()]) Auswirkungen auf die Leistung
Beim Konvertieren einer ArrayList zu einem Array hinzufügen, können Entwickler zwischen zwei Ansätzen wählen:
Während der zweiten Option ist weniger ausführlich, wirft Fragen zu möglichen Leistungsaspekten auf.
Benchmark Analyse
Um die Auswirkungen auf die Leistung zu ermitteln, wurden Benchmarks mit JMH auf Hotspot 8 durchgeführt. Die Ergebnisse zeigten, dass die Verwendung eines leeren Arrays durchweg die Voreinstellung des Arrays übertrifft:
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 ...
Erklärung
Diese kontraintuitive Feststellung kann auf Optimierungen zurückgeführt werden, die vom JVM- und JIT-Compiler eingesetzt werden. Diese Optimierungen ermöglichen die effiziente Erstellung und Initialisierung von Arrays mit der richtigen Größe, ohne dass vom Benutzer bereitgestellte Abmessungen erforderlich sind.
Empfehlung
Basierend auf Benchmark-Ergebnissen und Analysen ist dies der Fall Empfohlene Verwendung:
MyClass[] arr = myList.toArray(new MyClass[0]);
Dies verbessert nicht nur die Leistung, sondern steht auch im Einklang mit dem Prinzip, die JVM allgemeine Vorgänge wie die Array-Erstellung optimieren zu lassen.
Das obige ist der detaillierte Inhalt von`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Was ist leistungsfähiger?`. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!