2011-12-24 24 views
7

[x,y,z].join('') dizeleri için x + y + z'dan daha hızlı mı? Google kodlamacılar varsayarsak[x, y, z] .join ('') dizeler için x + y + z 'den gerçekten daha hızlı mı?

ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 

:

(katılmak izlenim altında

) Sonra ben Google Analytics koduna aşağıdaki satırı koştu, + yerine kullanmak için benim kodu ile başlayan, daha hızlıdır en bilgili olanlar arasında, beni merak ediyor. Tabii ki, bu hat sadece sayfa yükleme başına bir kez çalışacak ve herhangi bir hız farkı ihmal edilebilir. Ama hala? web siteleri çok gibi internet Kaşifler kaçarken bitiştirmek dizeleri

+1

bir fonksiyonun hız JavaScript tarafından belirlenir tarayıcılar arasında değişen uygulama. Test için - http://jsperf.com/ – Bakudan

+1

Bu ayrıca '[x, y] .join ('')' dir. Tasarrufun daha fazla sayıda argümanla olduğuna inanıyorum (çünkü + + ile ekleme başına bir çağrı yaparsınız ve bir işlev çağrısı sadece bir işlevdir.) – Hogan

+0

+ Bakudan, bir miktar ışık tutacak bir test buldu: http: // jsperf .com/concat-vs-join2/4 – TJR

cevap

2

: Ben "+" ve düşük 50s düşük 40'lı ortalama

b = new Date().getTime(); for (var i = 0; i < 10000; i++) {a = "sfhfdshdshsdh" + "sfhsfdhsfhdsfh" + "shsfdsdgsdgsgsdfgdfsgsfdghsdfhsdh";} c = new Date().getTime(); d = c - b; 

ve

b = new Date().getTime(); for (var i = 0; i < 10000; i++) {a = ["sfhfdshdshsdh","sfhsfdhsfhdsfh","shsfdsdgsdgsgsdfgdfsgsfdghsdfhsdh"].join();} c = new Date().getTime(); d = c - b; 

böylece "katılmak" birleşme daha yavaş görünüyor. Bu, büyük olasılıkla birleştirme için bir dizi oluşturma gereği nedeniyle ortaya çıkar. Ayrıca bu farklı tercümanlar ile farklı tarayıcılarda farklı olabilir.

+2

Belki de [jspref.com] adresini denemelisiniz (http://jspref.com/). –

6

Dizi .join() yöntemi (-trick) o zamanlar kökleri vardır. IE6 + 7 için onun .join() daha çok doğru nedeniyle IE dize operasyonları ile gerçekten kötü bir davranışa + operatörünü kullanarak daha çok hızlıdır.

Diğer tarayıcılar için performans farkı o kadar büyük değildi, yüzden (sonra tekrar, tekrar) .join() kullanmak iyi tavsiye edildi. Günümüzde çoğu motor, string işlemlerini büyük bir zaman için optimize eder ve kodunuzun herhangi birisinin IE6 + 7'de çalıştığını düşünmediğiniz sürece, sadece +'u kullanmalısınız. Aşağıdaki kodu kullanarak Firefox 6.0.2 Firebug Konsolu kullanarak

İlgili konular