Apabila menukar ArrayList kepada array menggunakan kaedah toArray, terdapat dua pilihan untuk menentukan saiz array: menggunakan a预先调整大小的数组或一个空的数组。 Mari kita terokai implikasi prestasi mereka.
Andaikan kita mempunyai ArrayList
MyClass[] arr = myList.toArray(new MyClass[myList.size()]); // Presized array MyClass[] arr = myList.toArray(new MyClass[0]); // Empty array
Secara intuitif, mengubah saiz tatasusunan mungkin kelihatan lebih cekap, tetapi hasil penanda aras menggunakan Java Microbenchmark Harness (JMH) mendedahkan penemuan yang mengejutkan. Mencipta tatasusunan dengan parameter saiz kosong (MyClass[0] baharu) secara konsisten mengatasi versi berprestasi (MyClass[myList.size()] baharu secara konsisten).
Pengkompil JVM dan JIT mempunyai pengoptimuman yang boleh mencipta dan mulakan tatasusunan dengan saiz yang betul. Dengan menyediakan tatasusunan kosong, pengkompil boleh memanfaatkan pengoptimuman ini, yang membawa kepada prestasi yang lebih baik. Kelebihan ini amat ketara apabila saiz tatasusunan bertambah.
Berikut ialah hasil penanda aras:
Size | Presized Array (μs) | Empty Array (μs) |
---|---|---|
1 | 0.025 | 0.019 |
100 | 0.155 | 0.133 |
1000 | 1.512 | 1.075 |
5000 | 6.884 | 5.318 |
10000 | 13.147 | 10.652 |
100000 | 159.977 | 139.692 |
Seperti yang anda lihat, kaedah tatasusunan kosong menawarkan kelebihan prestasi yang sedikit tetapi konsisten. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa hasil ini mungkin berbeza-beza bergantung pada pengoptimuman pengkompil JVM dan JIT tertentu, serta saiz dan ciri data anda.
Atas ialah kandungan terperinci Bagaimanakah Pengukuran Array Memberi Impak ArrayList kepada Prestasi Penukaran Array dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!