Computer >> Máy Tính >  >> Lập trình >> Javascript

So sánh forEach () và Reduce () để tính tổng một mảng số trong JavaScript.

Chúng tôi được yêu cầu so sánh thời gian tương ứng của các hàm ES6 forEach () và Reduce () để tính tổng một mảng lớn các số.

Vì chúng ta không thể có một mảng lớn các số ở đây, chúng ta sẽ mô phỏng độ lớn của mảng bằng cách thực hiện phép tính tổng cho một số lượng lớn các lần (lặp)

Ví dụ

Hãy viết mã cho điều này -

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');

Đầu ra

Sau đây là đầu ra trong bảng điều khiển -

reduce: 19.058s
forEach: 45.204s

Đại khái, tỷ lệ thời gian được thực hiện bởi Array.prototype.reduce () với thời gian được thực hiện bởi Array.prototype.forEach là 1:1,4