Front-end/JavaScript

JS FP 7편 - Memoization

파리외 개발자 2023. 3. 12. 00:33

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);

클로져로 작성된 함수에 캐싱 공간을 만들어서

처음 받는 인자값이라면 캐시공간에 저장하고 연산하여 리턴 하지만

이후부터 같은 인자값이 전달된다면 저장된 캐시공간에서 바로 리턴한다.

이처럼 메모이제이션은 같은 연산을 방지하는 것에 의미가 있다.