[javascript] Lodash의 캐싱 기능과 사용 예제

개요

Lodash는 자바스크립트 유틸리티 라이브러리로, 다양한 기능을 제공한다. 그 중에서도 캐싱 기능은 많은 개발자들에게 유용하게 사용되고 있다. 이번 글에서는 Lodash의 캐싱 기능에 대해 알아보고, 간단한 사용 예제를 살펴보겠다.

캐싱이란?

캐싱은 이전에 계산한 값을 저장해 두었다가, 동일한 입력에 대해서는 미리 계산된 값을 반환하는 기법을 말한다. 이를 통해 계산 비용을 줄이고 성능을 향상시킬 수 있다.

Lodash의 캐싱 기능

Lodash는 _.memoize 메서드를 통해 캐싱 기능을 제공한다. 이 메서드는 입력값을 키로 하여 결과값을 저장하고, 동일한 입력이 들어오면 저장된 값을 반환한다. 단, 입력값이 객체인 경우에는 동일한 참조를 가지고 있어야 캐싱이 동작한다.

_.memoize 메서드는 입력값과 결과값을 관리하는 캐시 객체를 반환한다. 이 캐시 객체에는 cache라는 프로퍼티가 있으며, 이를 통해 캐시된 입력값과 결과값을 확인할 수 있다.

사용 예제

다음은 Lodash의 캐싱 기능을 사용하는 간단한 예제이다.

const calculateSum = (a, b) => {
  console.log("Calculating sum...");
  return a + b;
};

const cachedSum = _.memoize(calculateSum);

console.log(cachedSum(1, 2)); // 캐싱되지 않았으므로 계산 수행
console.log(cachedSum(1, 2)); // 캐싱된 값 사용

console.log(cachedSum(3, 4)); // 캐싱되지 않았으므로 계산 수행
console.log(cachedSum(3, 4)); // 캐싱된 값 사용

위 예제에서 calculateSum 함수는 항상 계산을 수행하고 그 결과를 반환한다. 하지만 _.memoize 메서드를 사용하여 cachedSum 함수를 생성하면, 동일한 입력에 대해서는 미리 계산된 값을 사용하여 성능을 향상시킬 수 있다. 따라서 첫 번째와 두 번째 호출은 실제로는 한 번의 계산만 수행하고, 세 번째와 네 번째 호출도 한 번의 계산만 수행하게 된다.

결과 확인

위 예제를 실행해보면 출력 결과에서 첫 번째와 세 번째 호출 시 “Calculating sum…“이라는 메시지가 출력되는 것을 확인할 수 있다. 반면, 두 번째와 네 번째 호출 시 해당 메시지가 출력되지 않는 것을 확인할 수 있다. 이는 두 번째와 네 번째 호출 시 캐시된 값이 사용되기 때문이다.

참고 자료