lodash의 지연 평가
시작전에 우선 함수형 프로그래밍 부터 보자( lodash 재밌음 )
컴퓨터 프로그래밍에서 지연 평가(Lazy Evaluation)는 함수형 프로그래밍에서 자주 사용되는 개념이다.
동작 원리
우선 지연 평가와 엄격한 평가의 두가지 동작 방식을 알아야 한다.
엄격한 평가
- 일반적인 평가 방식인데, 평가 흐름 자체가 왼쪽에서 오른쪽으로 흐른다.
오늘 알게된 지식 시리즈이기 때문에 간단하게만 적어봄.
const arr = [1,2,3,4,5,6,7,8,9,10] ;
const result = arr.map((i) => i + 10).filter((i)=> i % 2).slice(2,0);
엄격한 평가의 연산 횟수
지연평가의 연산 횟수
지연평가의 연산 횟수가 10번인 이유
- 엄격한 평가의 흐름과는 반대로 위에서 아래로 흐른다.
- 배열의 첫번째 요소 '1'을 10을 더하고 2로 나눈다.
- 11은 홀수 -> filter연산과 splice 연산까지(lodash에선 take)
4 배열의 두번째 요소 '2'에 대해서 연산을 한다.(10을 더함)
- 12는 홀수 -> filter 조건에 대한 연산을하고 짝수이기 때문에 splice연산을 하지 않음(필요없기 때문에)
- 배열의 세번째, 네번째 '3', '4' 도 마찬가지로 연산함
총 10번의 연산횟수를 가진다.
너무 대충 작성해서 다음에 함수형 프로그래밍과 rxJs 글을 쓸때 자세하게 작성한다.!