cache_function
v1.0.5
Published
一个函数可以让自动缓存函数执行到cache,当存在缓存时直接返回结果, 并不重复执行函数,必须兼容ES6 Symbol
Downloads
9
Readme
说明
cache_function(func,{maxStory:500,timeout:500})
//maxStory 最大缓存数量
//timeout 定时清除时间, 默认为0 ,代表不清除
ts 声明
declare module "cache_function"{
export function cache_function<argu,res>(
f:(...arg:argu[])=>res,opt:{
maxStory?:number//最大缓存数量
timeout?:number//有效时间
arguToString?
}
):
{
(...arg:argu[]):res
clearAll():void
getStore():{[key:symbol]:res}
getCacheResult(...arg:argu[]):res
removeCacheResult(...arg:argu[]):res
}
}
测试
var cache_function=require("./cacheFunction");
function test() {
return console.log(arguments);
}
t_test=cache_function(test);
t_test({a:14});
t_test({a:18});
t_test({a:17});
//debugger
t_test(14);
t_test({a:14});
t_test({a:18});
t_test({a:17});
for(var i=0;i<30;i++)
t_test(Math.floor( i/2))
var i=0;// i++
var cache_function=require("./cacheFunction");
function fibo (n) {
i++;
return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;
}
fibo=cache_function(fibo,{maxStory:50});
/*
165580141
执行次数41
aa: 2.783ms
*/
/*
不添加cache
165580141
执行次数331160281
aa: 11668.664ms
*/
console.time("aa");
console.log(fibo(40));
console.log("执行次数"+i);
console.timeEnd("aa");