자바스크립트의 메모이제이션

JavaScript와 함수형 프로그래밍은 함께 진행됩니다. 우리의 기능이 성능 면에서 비용이 많이 들 때가 있습니다. 동일한 입력으로 동일한 기능을 반복해서 수행하면 응용 프로그램의 경험이 저하될 수 있으며 불필요합니다.

메모이제이션은 함수 결과를 캐시하는 최적화 기술입니다. 동일한 입력을 다시 제공하면 성능 저하를 일으킬 수 있는 코드를 실행하는 대신 캐시에서 결과를 가져옵니다.

결과가 캐시되지 않은 경우 함수를 실행하고 결과를 캐시합니다. 숫자의 제곱을 구하는 예를 들어 보겠습니다.

const square = () => {
    let cache = {}; // set cache
    return (value) => {
        // if exists in cache return from cache
        if (value in cache) {
            console.log("Fetching from cache");
            return cache[value];
        } else {
            // If not in cache perform operation
            console.log("Performing expensive query");
            const result = value * value;
            cache[value] = result; // store the value in cache
            return result; // return result
        }
    }
}

const sq = square();
console.log(sq(21)); // Performing expensive query, 441
console.log(sq(21)); // Fetching from cache, 441

왜 또는 언제 사용합니까?


  • 값비싼 함수 호출의 경우, 즉 출력이 변경되지 않을 수 있는 네트워크 호출을 수행하는 함수 또는 대규모 계산 또는 디스크 I/O가 있는 함수입니다.
  • 순수 함수의 경우(함수 출력이 동일한 입력에 대해 동일하게 유지되는 경우).
  • 입력 범위가 제한적이지만 반복적으로 많이 사용되는 기능의 경우.
  • 좋은 웹페이지 즐겨찾기