Skip to content

Latest commit

 

History

History
40 lines (30 loc) · 1.39 KB

메모이제이션.md

File metadata and controls

40 lines (30 loc) · 1.39 KB

메모이제이션

Create Date: 2022/12/30
Update Date: 2022/12/30

노션에서 확인하기

메모이제이션(memoization) 아시는 분 계실까요?

간단합니다! 이전에 계산한 결과를 캐시하여 동일한 상황에 같은 계산을 반복하지 않고 사용하는 것을 메모이제이션이라 합니다.

팩토리얼을 메모이제이션으로 구현해보겠습니다.

function factorial(n) {
  if (Number.isInteger(n) && n > 0) {
    if (!(n in factorial)) {
      factorial[n] = n * factorial(n - 1);
    }
    return factorial[n];
  } else {
    return '잘못된 숫자가 입력되었습니다.';
  }
}

factorial[1] = 1; // 캐시를 초기화합니다.
factorial(6); // => 720
factorial[5]; // => 120 / 이 값은 이미 캐시에 존재합니다.

이 부분을 간단히 다룬 이유는 리액트에 메모이제이션 훅이 있기 때문입니다.

  • useMemo는 메모이제이션된 값을 반환합니다.
  • useCallback은 메모이제이션된 콜백을 반환합니다.

참고 자료