Membandingkan Kelajuan Penduaan Tatasusunan dalam JavaScript: Slice vs. For Loop
Dalam JavaScript, terdapat dua kaedah biasa untuk mencipta pendua tatasusunan: kaedah hirisan dan gelung untuk. Untuk menjalankan analisis menyeluruh tentang kelajuan masing-masing, pelbagai kaedah penduaan telah ditanda aras, mendedahkan beberapa keputusan yang mengejutkan.
Pengukuran Kelajuan
Tanda aras yang dijalankan merentas penyemak imbas yang berbeza telah menunjukkan bahawa kaedah terpantas untuk menduplikasi tatasusunan bergantung pada enjin penyemak imbas yang digunakan. Untuk penyemak imbas seperti Blink (Chrome, Edge), kaedah slice biasanya mengatasi gelung for, dengan concat menjadi lebih perlahan.
Walau bagaimanapun, untuk penyemak imbas dengan pelaksanaan slice dan concat yang kurang dioptimumkan, seperti versi Firefox yang lebih lama dan Internet Explorer, kaedah gelung sementara muncul sebagai pemenang yang jelas.
Contoh Kod
Berikut ialah skrip contoh yang boleh anda gunakan untuk menanda aras kaedah itu sendiri dalam konsol penyemak imbas anda:
// While loop method var n = 1000 * 1000; var start = +new Date(); var a = Array(n); var b = Array(n); var i = a.length; while (i--) b[i] = a[i]; console.log(new Date() - start); // Slice method var n = 1000 * 1000; var start = +new Date(); var a = Array(n); var b = a.slice(); console.log(new Date() - start);
Pertimbangan
Ia penting untuk ambil perhatian bahawa walaupun kaedah slice atau for loop akan menduplikasi tatasusunan itu sendiri, kandungan tatasusunan disalin melalui rujukan dan bukan diklon secara mendalam. Ini bermakna bahawa perubahan pada mana-mana tatasusunan akan ditunjukkan dalam kedua-duanya.
Jadi, kaedah manakah yang harus anda pilih? Bagi kebanyakan penyemak imbas moden, kaedah hirisan adalah pilihan terbaik. Walau bagaimanapun, jika anda menyasarkan penyemak imbas lama dengan pelaksanaan JavaScript yang kurang dioptimumkan, kaedah untuk gelung mungkin berprestasi lebih baik.
Atas ialah kandungan terperinci Kaedah Penduaan Tatasusunan JavaScript (Slice vs. For Loop) manakah yang Paling Pantas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!