Dalam JavaScript, saya memiliki loop yang memiliki banyak iterasi, dan di setiap iterasi, saya membuat string besar dengan banyak +=
operator. Apakah ada cara yang lebih efisien untuk membuat string? Saya sedang berpikir tentang membuat array dinamis di mana saya terus menambahkan string ke sana dan kemudian bergabung. Adakah yang bisa menjelaskan dan memberikan contoh cara tercepat untuk melakukan ini?
163
Jawaban:
Tampaknya berdasarkan tolok ukur di JSPerf bahwa menggunakan
+=
adalah metode tercepat, meskipun tidak harus di setiap browser.Untuk membangun string di DOM, tampaknya lebih baik untuk menyatukan string terlebih dahulu dan kemudian menambahkan ke DOM, daripada iteratif menambahkannya ke dom. Anda harus membandingkan sendiri kasing Anda.
(Terima kasih @zAlbee untuk koreksi)
sumber
+=
dan melakukan join pada array.66%
(Untuk IE9) lebih cepat daripada membuat string keluar dan kemudian menambahkan string ke DOM.Saya tidak punya komentar tentang rangkaian itu sendiri, tetapi saya ingin menunjukkan bahwa saran @Jakub Hampl:
salah, karena didasarkan pada tes yang cacat. Tes itu tidak pernah benar-benar ditambahkan ke DOM.
Tes tetap ini menunjukkan bahwa membuat string sekaligus sebelum merendernya jauh, JAUH lebih cepat. Ini bahkan bukan kontes.
(Maaf ini adalah jawaban yang terpisah, tetapi saya belum memiliki cukup perwakilan untuk mengomentari jawaban.)
sumber
Tiga tahun yang lalu sejak pertanyaan ini dijawab tetapi saya tetap akan memberikan jawaban saya :)
Sebenarnya, jawaban yang diterima tidak sepenuhnya benar. Tes Jakub menggunakan string hardcoded yang memungkinkan mesin JS untuk mengoptimalkan eksekusi kode (Google V8 sangat bagus dalam hal ini!). Tapi begitu Anda menggunakan string yang benar-benar acak (di sini adalah JSPerf ) maka rangkaian string akan berada di tempat kedua.
sumber
Anda juga dapat melakukan string concat dengan templat literal . Saya memperbarui tes JSPerf poster lain untuk memasukkannya.
sumber