扫码一下
查看教程更方便
_.memoize(function, [hashFunction])
memoizes() 方法可以缓存某函数的计算结果。对于耗时较长的计算是很有帮助的。如果传递了 hashFunction 参数,就用 hashFunction 的返回值作为 key 存储函数的计算结果。hashFunction 默认使用 function 的第一个参数作为 key。memoized 值的缓存可作为返回函数的 cache 属性。
var _ = require('underscore');
var fibonacci = _.memoize(function(n) {
return n < 2 ? n: fibonacci(n - 1) + fibonacci(n - 2);
});
var fibonacci1 = function(n) {
return n < 2 ? n: fibonacci1(n - 1) + fibonacci1(n - 2);
};
var startTimestamp = new Date().getTime();
var result = fibonacci(1000);
var endTimestamp = new Date().getTime();
console.log(result + " in " + ((endTimestamp - startTimestamp)) + ' ms');
startTimestamp = new Date().getTime();
result = fibonacci1(30);
endTimestamp = new Date().getTime();
console.log(result + " in " + ((endTimestamp - startTimestamp)) + ' ms');
上面示例运行结果如下