เราจำเป็นต้องเปรียบเทียบเวลาตามลำดับโดยฟังก์ชัน 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