Analisis Prestasi: Mendua Tatasusunan dalam JavaScript Menggunakan Slice vs. Untuk Gelung
Dalam JavaScript, terdapat pelbagai pendekatan untuk menduplikasi tatasusunan. Dua kaedah biasa termasuk kaedah hirisan dan gelung for. Artikel ini meneroka prestasi relatif mereka untuk menentukan yang mana lebih pantas.
Kaedah Slice:
Kaedah slice mencipta tatasusunan baharu dengan mengekstrak bahagian tertentu daripada tatasusunan asal. Kod berikut menunjukkan contoh:
var dup_array = original_array.slice();
Untuk Gelung:
A untuk gelung berulang melalui setiap elemen tatasusunan asal dan secara manual mencipta salinan dalam yang baharu tatasusunan:
for(var i = 0, len = original_array.length; i < len; ++i) dup_array[i] = original_array[i];
Keputusan:
Tanda aras telah mendedahkan bahawa kaedah slice biasanya lebih pantas untuk penyemak imbas berasaskan blink, seperti Chrome dan Edge, manakala gelung for lebih pantas dalam penyemak imbas lain, seperti Firefox dan Safari. Ini disebabkan oleh pengoptimuman dalaman untuk slice dan concat dalam penyemak imbas blink.
Khususnya, sintaks spread (cth., [...original_array]) dan Array.from() telah muncul sebagai kaedah terpantas untuk penduaan tatasusunan , mengatasi kedua-dua slice dan gelung for dalam kebanyakan senario.
Tanda Aras Skrip:
Skrip JavaScript berikut boleh dilaksanakan dalam konsol penyemak imbas untuk membandingkan prestasi kaedah gelung for dan slice:
Untuk Gelung:
n = 1000 * 1000; start = +new Date(); a = Array(n); b = Array(n); i = a.length; while (i--) b[i] = a[i]; console.log(new Date() - start);
Slice:
n = 1000 * 1000; start = +new Date(); a = Array(n); b = a.slice(); console.log(new Date() - start);
Dengan menjalankan skrip ini beberapa kali, anda boleh melihat prestasi relatif setiap kaedah di bawah penyemak imbas yang berbeza syarat.
Nota: Ingat bahawa kaedah ini hanya melakukan salinan cetek, bermakna objek dirujuk dalam tatasusunan asal akan dikongsi dengan tatasusunan pendua. Pertimbangkan teknik pengklonan mendalam untuk struktur data yang lebih kompleks.
Atas ialah kandungan terperinci Slice vs. For Loop dalam JavaScript: Kaedah Manakah yang Menawarkan Penduaan Tatasusunan Lebih Pantas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!