[JS] Javascript 로 함수 캐시하기
in Javascript
스프링에서 쓰던 캐시처럼 자바스크립트에서도 수행시간이 오래 걸리는 함수를 캐시해서 수행시간을 줄여보자.
캐시되는 함수 생성함수
파라메터로 캐싱할 함수를 넘겨줌
/**
* 캐시함수 생성함수
* @param func 생성할 함수
*/
var cache = function(func) {
var c = {};
return function(...args) {
var key = JSON.stringify(args);
if (!c[key]) {
console.log('캐시 X');
c[key] = func(...args);
} else {
console.log('캐시 O');
}
return c[key];
};
};
테스트
var test = cache(function(a, b) {
return a + b;
});
console.log(test(1, 5)); // 캐시 X
console.log(test(1, 5)); // 캐시 O
console.log(test(2, 5)); // 캐시 X
console.log(test(3, 5)); // 캐시 X
console.log(test(1, 5)); // 캐시 O
console.log(test(2, 5)); // 캐시 O