Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเปรียบเทียบ 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