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

`toArray(MyClass baharu[0]) lwn. toArray(MyClass baharu[myList.size()]): Manakah yang Lebih Berprestasi?`

DDD
Lepaskan: 2024-11-24 17:28:13
asal
485 orang telah melayarinya

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

toArray(MyClass baharu[0]) atau toArray(New MyClass[myList.size()]) Implikasi Prestasi

Apabila menukar ArrayList kepada tatasusunan, pembangun boleh memilih antara dua menghampiri:

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

Manakala pilihan kedua kurang verbose, ia menimbulkan persoalan tentang kemungkinan pertimbangan prestasi.

Analisis Penanda Aras

Untuk menentukan kesan prestasi, penanda aras telah dijalankan menggunakan JMH pada Hotspot 8. Keputusan menunjukkan bahawa menggunakan tatasusunan kosong secara konsisten mengatasi prestasi presizing tatasusunan:

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

Penjelasan

Penemuan berlawanan intuitif ini boleh dikaitkan dengan pengoptimuman yang digunakan oleh pengkompil JVM dan JIT. Pengoptimuman ini membolehkan penciptaan dan permulaan tatasusunan bersaiz betul dengan cekap tanpa memerlukan dimensi yang dibekalkan pengguna.

Pengesyoran

Berdasarkan hasil penanda aras dan analisis, ia adalah disyorkan untuk menggunakan:

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

Ini bukan sahaja meningkatkan prestasi tetapi juga sejajar dengan prinsip membenarkan JVM mengoptimumkan operasi biasa seperti penciptaan tatasusunan.

Atas ialah kandungan terperinci `toArray(MyClass baharu[0]) lwn. toArray(MyClass baharu[myList.size()]): Manakah yang Lebih Berprestasi?`. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan