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
DDDasal
2024-11-24 17:28:13500semak imbas

`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
...

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!

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