Memoization
메모이제이션은 함수의 동일 동작을 반복해서 처리하지 않고
저장하여 불필요한 반복행위를 방지하는 것이다.
function addTo5(n) {
console.log("calculation...");
return n + 5;
}
addTo5(5);
addTo5(5);
addTo5(5);
함수를 실행할 때마다 매번 같은 연산을 실행한다.
//only one time calculation
function memoizedAddTo5() {
let cache = {};
return function (n) {
if (n in cache) {
return cache[n];
} else {
console.log("calculation...");
cache[n] = n + 5;
return cache[n];
}
};
}
const memoized = memoizedAddTo5();
memoized(5);
memoized(5);
memoized(5);
memoized(10);
memoized(10);
클로져로 작성된 함수에 캐싱 공간을 만들어서
처음 받는 인자값이라면 캐시공간에 저장하고 연산하여 리턴 하지만
이후부터 같은 인자값이 전달된다면 저장된 캐시공간에서 바로 리턴한다.
이처럼 메모이제이션은 같은 연산을 방지하는 것에 의미가 있다.
'Front-end > JavaScript' 카테고리의 다른 글
JS FP 9편 - 함수형 프로그램 (0) | 2023.03.15 |
---|---|
JS FP 8편 - 함수 합성(Compose, Pipe, Arity) (0) | 2023.03.13 |
JS FP 6편 - 부분 적용 함수(Partial Application) (0) | 2023.03.11 |
JS FP 5편 - 함수형 프로그래밍의 핵심기술(Hof, clusure, currying) (0) | 2023.03.10 |
JS FP 4편 - 불변성(Immutability) (0) | 2023.03.09 |