![](/img/trans.png)
[英]for loop vs forEach performance in javascript and credibility of jsperf results
[英]Javascript foreach loop performance
我正在考慮改進每個循環的一些,並創建一個測試基准來比較我們使用它們的不同方式。 測試可以在這里找到 。
我很驚訝地發現這段代碼:
function add(val) {
sum += val;
}
values.forEach(add);
比這個表現更好。
values.forEach(function(val) {
sum += val;
});
這些不一樣嗎? 是什么讓第一個代碼段比第二個更快?
這是你的測試的問題。 你的測試是:
values.forEach(add);
和
values.forEach(function(val) {
sum += val;
});
在第二個測試中,您將計算函數的創建時間以及forEach
的執行時間。 在第一個測試中,您沒有計算功能的創建時間; 這是在測試的設置階段完成的,沒有定時。
Davin Tryon創建了一個在兩種情況下都能創建函數的測試 :
function add(val) {
sum += val;
}
values.forEach(add);
與
values.forEach(function(val) {
sum += val;
});
...其中性能差異在某些引擎上消失,而另一方面(聲明較慢)則在某些引擎上消失。 (后者可能是引擎在測試期間發現它可以內聯函數,或者至少跳過一些它無法通過聲明跳過的步驟。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.