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
은 메모이제이션된 콜백을 반환합니다.