Underscore.JS - memoize 方法
语法
_.memoize(function, [hashFunction])
memoize 方法可加快缓慢的计算速度。它通过缓存其输出来记住给定函数。如果传递了 hashFunction,则用于根据传递给原始函数的参数计算哈希值以存储结果。请参阅以下示例
示例
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');
将上述程序保存在tester.js中。运行以下命令执行该程序。
命令
\>node tester.js
输出
4.346655768693743e+208 in 6 ms 832040 in 30 ms