방대한 숫자 배열을 합산하기 위해 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입니다.