2012-11-07 74 views
0

可能重複:
What loop is faster, while or forthree.js所爲什麼它使用for循環,而不是同時

我three.js所看到有許多語言通用代碼的特徵:

for (var i = 0, l = something.length; i < l; i++) { 
    do some stuff over i 
} 

,但我讀到,在JavaScript性能可以通過使用更好的:

var i = something.length; 
while(i--){ 
    do some stuff over i 
} 

這是否實際上顯着提高了任何性能?是否有理由相對於另一方偏好?

+0

@ user1689607:不,這是一個語言特定的問題。這個問題是語言中立的。 –

+0

@ T.J.Crowder:然後我們可以從右邊的列表中選擇另一個。 http://stackoverflow.com/questions/10848552/in-javascript-why-is-a-reverse-while-loop-an-order-of-magnitude-faster-than?rq=1 –

+1

你從哪裏讀到的? http://jsperf.com/forvswhilee – David

回答

3

這是否實際上顯着提高了任何性能?

不是可靠的跨瀏覽器(也就是說,跨JavaScript實現)。

而且,請注意,在你的榜樣,你的while循環迴路落後(ñ爲0),則for循環引用你循環前(0至ñ)。有時候很重要。

一般來說,微優化很少適合,在JavaScript的情況下,這尤其是,特別是是真實的,其中野外的不同實現具有明顯不同的性能特徵。相反,編寫代碼是明確和可維護,並且地址特定性能問題只有當它們出現時,並且如果它們出現在您的目標引擎上解決它們。

+0

+1瀏覽器不可知性的性能警方很少考慮事實上單個額外的DOMReady事件可能會佔用1000萬次循環。 – David