Chúng ta so sánh thời gian thực thi của hai phương thức ES6 forEach() và reduce() khi tính tổng một mảng số lớn.
Vì không thể tạo mảng quá lớn ở đây, chúng ta mô phỏng bằng cách lặp lại phép tính tổng nhiều lần.
Ví dụ
Mã thực hiện:
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');
Kết quả
Kết quả in ra console:
reduce: 19.058s forEach: 45.204s
Tóm lại, tỷ lệ thời gian giữa Array.prototype.reduce() và Array.prototype.forEach() khoảng 1 : 1.4