Gereğince OP tarafından talep Ben (umarım, kendimi aptal durumuna yapmadan: P) çip olacak
Sanırım hepimiz özyinelemenin sadece daha zarif bir kodlama yöntemi olduğuna karar verdik. İyi yapılırsa, daha fazla bakım yapılabilir kod yapabilir; bu da IMHO’nun 0.0001 ms’lik tıraş kadar önemlidir.
JS'nin Tail-call optimizasyonunu yapmadığı argümanına gelince, söz konusu: ECMA5'in katı modunun kullanılması TCO'yu mümkün kılıyor. Bir süre önce çok mutlu olmadığım bir şeydi ama en azından şimdi neden arguments.callee
katı modda hatalar attığını biliyorum . Yukarıdaki bağlantının bir hata raporuna bağlandığını biliyorum, ancak hata WONTFIX olarak ayarlandı. Ayrıca, standart TCO geliyor: ECMA6 (Aralık 2013).
İçgüdüsel olarak ve JS'nin işlevsel doğasına sadık kalarak, özyinelemenin zamanın% 99,99'unun daha verimli kodlama tarzı olduğunu söyleyebilirim. Ancak, Florian Margaine, darboğazın başka yerde bulunmasının muhtemel olduğunu söylerken bir noktaya değindi. DOM’da değişiklik yapıyorsanız, kodunuzu olabildiğince sürdürülebilir bir şekilde yazmaya odaklanmalısınız. DOM API budur: yavaş.
Daha hızlı olan seçenek olarak kesin bir cevap vermenin imkansız olduğunu düşünüyorum. Son zamanlarda, gördüğüm birçok jspref, Chrome'un V8 motorunun FF'in SpiderMonkey'inde 4x yavaş çalışan ve bunun tam tersi için 4x yavaş çalışan bazı işlerde gülünç derecede hızlı olduğunu gösteriyor . Modern JS motorları, kodunuzu optimize etmek için kolları üzerinde her türlü numaraya sahiptir. Uzman değilim, ama örneğin V8'in kapaklar (ve özyineleme) için oldukça optimize edilmiş olduğunu düşünüyorum, oysa ki MS'in JScript motoru değil. SpiderMonkey, DOM dahil olduğunda genellikle daha iyi performans gösterir ...
Kısacası: Hangi tekniğin daha iyi performans göstereceğini söyleyebilirim, her zamanki JS'de olduğu gibi, tahmin edilemez.