簡體   English   中英

Javascript foreach循環性能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM