這裏的測試:http://jsperf.com/forloopspeed爲什麼Firefox中的for(var i = 100; i--; {{}}比(var i = 100; i - > 0;){}慢得多(70%)?
正如你所看到的,所不同的是巨大的Firefox,目前在Safari中一個較小的程度上,並沒有在Chrome和Opera。
中類似的事情發生的,而環太:http://jsperf.com/whileloopspeed
這裏的測試:http://jsperf.com/forloopspeed爲什麼Firefox中的for(var i = 100; i--; {{}}比(var i = 100; i - > 0;){}慢得多(70%)?
正如你所看到的,所不同的是巨大的Firefox,目前在Safari中一個較小的程度上,並沒有在Chrome和Opera。
中類似的事情發生的,而環太:http://jsperf.com/whileloopspeed
我的猜測是,檢查i
(數字)是否是falsy值比檢查true
/false
(比較的結果)計算更昂貴。
我想在表達結果上執行的內部ToBoolean()
與給出boolean
時相比,在給出number
時稍慢。
In this test當使用!!
從布爾值轉換爲布爾值時,性能會有差異。
您的測試很有趣,但差異很小,並且在瀏覽器中看起來很相似,所以我不確定它如何解釋爲什麼Firefox在我的初始測試方面與其他瀏覽器的行爲表現如此不同。 – zjmiller
@zjmiller:我的回答當然是猜測。我不認爲你會在這裏得到太多的人與知識的執行提供一個確切的原因。但是誰知道?我認爲使用Mozilla提交錯誤報告將爲解決您的好奇心留下更大的潛力。 – user113716
這看起來像Jaegermonkey特有的問題。如果我在Tracemonkey下運行測試,效果會消失。
你確定你需要知道爲什麼嗎?你可以將你的發現提交給firefox bugtracker,並在推出時享受修復... – Szocske
夠公平的。只是好奇我猜。 – zjmiller
沒有真正相關,但最近我遇到了另一個奇怪的問題:http://jsperf.com/array-vs-object-jamie/3爲什麼Firefox通過索引訪問數組元素比Chrome要快五倍? –