在我搜索具體數字以支持在Javascript中使用const
關鍵字時,我偶然發現了所有三個變量聲明類型var,let和const之間的性能比較。我不喜歡測試設置,所以我創建了a simplified one。for循環中的javascript'let'和'var'
沒想到太大的區別和Firefox指標達到了我的期望:
但在鉻奇怪的事情發生了:
不僅所有的測試結果明顯降低但環內的let
分解爲速度的一小部分。
我決定在Browserstack中運行測試,以確保它不是我古怪的Linux設置。在Windows 10上,Firefox 53
和Chrome 58
也發生了同樣的情況。我甚至測試了一些較老的Chrome 50
,並得到了相同的行爲。
這是怎麼回事?這是一個錯誤嗎?
編輯:有人評論說,循環可能只是優化,因爲它什麼都不做。爲了表明,事實並非如此,我改變了the test。
您確定Firefox不只是優化代碼嗎?這些代碼塊實際上沒有做任何事情,所以可能是他們在速度上相似的原因。 – CodingIntrigue
_「我創建了一個簡化的。」_你基本上刪除了整個測試。你創建了一個什麼都不做,因此得到優化的循環。 「讓裏面」甚至沒有副作用,這就是爲什麼它是「最快」的原因。 Chrome的引擎似乎沒有優化這種特殊情況。 – zeroflagL
@CodingIntrigue:我想到了這一點,但運行一個空循環將導致數量顯着增加(我的機器上大約1800萬)。 – koehr