Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

So sánh forEach() và reduce() khi tính tổng mảng số - JavaScript


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