Rumah > Java > javaTutorial > ArrayList to Array: Mengapakah `toArray(New MyClass[0])` Lebih Cepat Daripada `toArray(new MyClass[myList.size()])`?

ArrayList to Array: Mengapakah `toArray(New MyClass[0])` Lebih Cepat Daripada `toArray(new MyClass[myList.size()])`?

Linda Hamilton
Lepaskan: 2024-12-02 09:50:10
asal
472 orang telah melayarinya

ArrayList to Array: Why is `toArray(new MyClass[0])` Faster Than `toArray(new MyClass[myList.size()])`?

Teka-teki Array: .toArray(MyClass baharu[0]) vs .toArray(MyClass baharu[myList.size()])

Apabila berurusan dengan ArrayLists, menukarnya kepada tatasusunan sering timbul. Untuk berbuat demikian, seseorang boleh menggunakan salah satu daripada dua teknik ini:

// Option 1: Specify Array Size
MyClass[] arr = myList.toArray(new MyClass[myList.size()]);

// Option 2: Blank Array
MyClass[] arr = myList.toArray(new MyClass[0]);
Salin selepas log masuk

Dari segi prestasi, penemuan yang tidak dijangka telah muncul: pada Hotspot 8, menggunakan tatasusunan kosong secara mengejutkan mengatasi versi prasaiz:

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
Salin selepas log masuk

Pengkompil JVM dan JIT mengoptimumkan penciptaan dan permulaan tatasusunan baharu bersaiz betul. Walau bagaimanapun, pengoptimuman ini tidak boleh digunakan pada tatasusunan yang dibuat pengguna. Oleh itu, menggunakan tatasusunan kosong membolehkan JVM melakukan pengoptimuman ini, menghasilkan prestasi yang lebih baik.

Atas ialah kandungan terperinci ArrayList to Array: Mengapakah `toArray(New MyClass[0])` Lebih Cepat Daripada `toArray(new MyClass[myList.size()])`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan