Rumah >Java >javaTutorial >`myList.toArray(MyClass baharu[myList.size()]) lwn. myList.toArray(MyClass[0] baharu): Manakah yang Menawarkan Prestasi Lebih Baik di Java?`

`myList.toArray(MyClass baharu[myList.size()]) lwn. myList.toArray(MyClass[0] baharu): Manakah yang Menawarkan Prestasi Lebih Baik di Java?`

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-28 09:16:12215semak imbas

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

Implikasi Prestasi toArray dengan Array Initialization

Soalan sama ada myList.toArray(new MyClass[myList.size()]) atau myList.toArray(MyClass baharu[0]) menawarkan prestasi yang lebih baik telah menimbulkan rasa ingin tahu di kalangan pembangun Java. Walaupun pendekatan kedua kelihatan lebih ringkas, andaian bahawa tatasusunan kosong diabaikan daripada penciptaan mungkin tidak selalunya benar.

Hasil Penanda Aras

Untuk menjelaskan perkara ini , penanda aras mikro telah dijalankan menggunakan Java HotSpot 8. Keputusan, yang dibentangkan di bawah, mendedahkan bahawa counterintuitive toArray(new Kaedah MyClass[0]) secara konsisten mengatasi prestasi toArray(MyClass baharu[myList.size()]) rakan sejawatannya:

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

Penjelasan

Mesin Maya Java ( JVM) dan pengkompil JIT menggunakan pengoptimuman yang membolehkan mereka mencipta dan memulakan tatasusunan dengan saiz yang sesuai dengan cekap. Pengoptimuman ini tidak tersedia apabila tatasusunan dibuat secara manual.

Kesimpulan

Berdasarkan hasil penanda aras dan analisis lanjut yang dibentangkan dalam catatan blog Susun Kebijaksanaan the Ancients, adalah jelas bahawa myList.toArray(MyClass baharu[0]) adalah disyorkan pendekatan untuk situasi di mana prestasi menjadi kebimbangan. Overhed penciptaan tatasusunan kosong dihapuskan dengan berkesan oleh pengoptimuman JVM, menghasilkan prestasi yang lebih pantas.

Atas ialah kandungan terperinci `myList.toArray(MyClass baharu[myList.size()]) lwn. myList.toArray(MyClass[0] baharu): Manakah yang Menawarkan Prestasi Lebih Baik di Java?`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn