Heim > Java > javaLernprogramm > `myList.toArray(new MyClass[myList.size()]) vs. myList.toArray(new MyClass[0]): Welches bietet eine bessere Leistung in Java?`

`myList.toArray(new MyClass[myList.size()]) vs. myList.toArray(new MyClass[0]): Welches bietet eine bessere Leistung in Java?`

Mary-Kate Olsen
Freigeben: 2024-11-28 09:16:12
Original
257 Leute haben es durchsucht

`myList.toArray(new MyClass[myList.size()]) vs. myList.toArray(new MyClass[0]): Which Offers Better Performance in Java?`

Auswirkungen auf die Leistung von toArray mit Array-Initialisierung

Die Frage, ob myList.toArray(new MyClass[myList.size()]) oder myList.toArray(new MyClass[0]) bietet eine bessere Leistung und hat bei Java-Entwicklern Neugier geweckt. Während der zweite Ansatz prägnanter erscheint, trifft die Annahme, dass das leere Array bei der Erstellung weggelassen wird, möglicherweise nicht immer zu.

Benchmark-Ergebnisse

Um Licht in diese Angelegenheit zu bringen wurde ein Mikrobenchmark mit Java HotSpot 8 durchgeführt. Die unten dargestellten Ergebnisse zeigen, dass die kontraintuitive toArray(new MyClass[0])-Methode durchweg eine bessere Leistung erbringt sein toArray(new MyClass[myList.size()])-Gegenstück:

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.preSize      1000  avgt       30    1.512 ▒ 0.031  us/op
c.a.p.SO29378922.preSize      5000  avgt       30    6.884 ▒ 0.130  us/op
c.a.p.SO29378922.preSize     10000  avgt       30   13.147 ▒ 0.199  us/op
c.a.p.SO29378922.preSize    100000  avgt       30  159.977 ▒ 5.292  us/op
c.a.p.SO29378922.resize          1  avgt       30    0.019 ▒ 0.000  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
c.a.p.SO29378922.resize       5000  avgt       30    5.318 ▒ 0.121  us/op
c.a.p.SO29378922.resize      10000  avgt       30   10.652 ▒ 0.227  us/op
c.a.p.SO29378922.resize     100000  avgt       30  139.692 ▒ 8.957  us/op
Nach dem Login kopieren

Erklärung

Die Java Virtual Machine (JVM) und der JIT-Compiler verwenden Optimierungen, die ermöglichen es ihnen, Arrays mit der entsprechenden Größe effizient zu erstellen und zu initialisieren. Diese Optimierungen sind nicht verfügbar, wenn Arrays manuell erstellt werden.

Fazit

Basierend auf den Benchmark-Ergebnissen und weiteren Analysen im Blogbeitrag Arrays of Wisdom of the Ancients ist es offensichtlich, dass myList.toArray(new MyClass[0]) der empfohlene Ansatz für Situationen ist, in denen die Leistung ein Problem darstellt. Der Aufwand für die Erstellung leerer Arrays wird durch die Optimierungen der JVM effektiv eliminiert, was zu einer schnelleren Leistung führt.

Das obige ist der detaillierte Inhalt von`myList.toArray(new MyClass[myList.size()]) vs. myList.toArray(new MyClass[0]): Welches bietet eine bessere Leistung in Java?`. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage