比較 forEach() 和 reduce() 來求和一個包含數字的 JavaScript 陣列所花費的時間。
我們需要比較 ES6 函式 forEach() 和 reduce() 分別花費的時間,用於計算一個包含大量數字的陣列的和。
由於我們這裡不可能有大量陣列,我們將透過執行大量次(迭代)求和操作來模擬陣列的大小
示例
讓我們編寫此程式碼 −
const arr = [1, 4, 4, 54, 56, 54, 2, 23, 6, 54, 65, 65]; const reduceSum = arr => arr.reduce((acc, val) => acc + val); const forEachSum = arr => { let sum = 0; arr.forEach(el => sum += el); return sum; }; const iterations = 1000000000; console.time('reduce'); for(let i = 0; i < iterations; i++){ let sumReduce = reduceSum(arr); }; console.timeEnd('reduce'); console.time('forEach'); for(let j = 0; j < iterations; j++){ let sumForEach = forEachSum(arr); }; console.timeEnd('forEach');
輸出
控制檯中的輸出如下 −
reduce: 19.058s forEach: 45.204s
因此,Array.prototype.reduce() 花費的時間與 Array.prototype.forEach 花費的時間之比約為 1 : 1.4
廣告