Heim >Java >javaLernprogramm >`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Was ist leistungsfähiger?`

`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Was ist leistungsfähiger?`

DDD
DDDOriginal
2024-11-24 17:28:13447Durchsuche

`toArray(new MyClass[0]) vs. toArray(new MyClass[myList.size()]): Which is More Performant?`

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:

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn