이번에는 array로 모든 값을 평가한 후에 해당하는 array를 이터레이터로 만들어서 reduce를 통해 add를 하는 코드와
배열을 만들지 않고 바로 이터레이터를 만들어서 reduce를 통해 다 add를 하는 코드가 어느정도 효율성을 가지고 있는지 보자. 아주 큰 성능상의 차이는 나지않는 것을 알고있자.
테스트를 하는 간단한 함수를 만든다. 테스트이름을 받고, 얼마나 실행할지, 실행함수를 받는 함수를 정하고
어떤 테스트인지를 정해주고 time만큼 실행하기 위해서 구현을 해준다.
<script>
function test(name, time, f) {
console.time(name);
while (time--) f();
console.timeEnd(name);
}
test를 실행하면서 range를 먼저하고 10번정도 하겠다 정해놓고 함수를 전달하면서 실제로 reduce를 하는데 add를 할거고 range를 1000000정도 크기를 하겠다고 정한다. 아래와 같은 효율성 정도의 차이를 보여주고 있다.
test('range', 10, () => reduce(add, range(1000000)))
test('L.range', 10, () => reduce(add, L.range(1000000)))
</script>
: 0.567138671875 ms
: 0.091796875 ms
<출처 : 유인동 함수형 프로그래밍과 JavaScript ES6+>
https://www.inflearn.com/course/functional-es6/dashboard
함수형 프로그래밍과 JavaScript ES6+ - 인프런 | 강의
ES6+와 함수형 프로그래밍을 배울 수 있는 강의입니다. 이 강좌에서는 ES6+의 이터러블/이터레이터/제너레이터 프로토콜을 상세히 다루고 응용합니다. 이터러블을 기반으로한 함수형 프로그래밍,
www.inflearn.com
'JavaScript > 함수형 프로그래밍과 JavaScript ES6+' 카테고리의 다른 글
제너레이터 / 이터레이터 프로토콜로 구현하는 지연 평가 (0) | 2021.08.20 |
---|---|
take 함수 (0) | 2021.08.20 |
range와 느긋한 range(지연성ⅰ) (0) | 2021.08.20 |
HTML로 출력하기 (0) | 2021.08.19 |
장바구니 예제(총 수량, 총 가격) (0) | 2021.08.19 |