🛠️ 처음부터 만드는 Memoize — 함수 결과를 캐싱하기
기본 구현
```javascript
function memoize(fn) {
const cache = new Map();
return function(...args) {
const key = JSON.stringify(args);
if (cache.has(key)) {
return cache.get(key);
}
const result = fn(...args);
cache.set(key, result);
return result;
};
}
// 사용 예: 팩토리얼 (재귀적 계산)
const factorial = memoize((n) => {
if (n <= 1) return 1;
return n * factorial(n - 1);
});
console.log(factorial(5)); // 120 (계산)
console.log(factorial(5)); // 120 (캐시)
```
TypeScript 버전
```typescript
function memoize
const cache = new Map
return ((...args: any[]) => {
const key = JSON.stringify(args);
if (cache.has(key)) return cache.get(key);
const result = fn(...args);
cache.set(key, result);
return result;
}) as T;
}
```
주의점
재귀, API 응답 캐싱, 복잡한 계산 등에서 성능을 크게 개선할 수 있습니다.
Comments (0)
💬
No comments yet.
Be the first to comment!