当前位置:主页 >09电竞平台官网

09电竞平台官网:JavaScript Memoization

发布时间:02月07日 阅读:676



Memoization 是一种将函数返回值缓存起来的措施,在 Lisp, Ruby, Perl, Python 等说话中应用异常广泛。跟着 Ajax 的兴起,客户端对办事器的09电竞平台官网哀求越来越密集(经典如 autocomplete),假如有一个优越的缓存机制,那么客户端 JavaScript 法度榜样的效率的提升是显而易见的。

Memoization 道理异常简单,便是把函数的每次履行结果都放入一个散列表中,在接下来的履行中,在散列表中查找是否已经有响应履行过的值,假如有,直接返回该值,没有才真正履行函数体的求值部分。很显着,找值,尤其是在散列中找值,比履行函数快多了。今世 JavaScript 的开拓也已经大年夜量应用这种技巧。

JavaScript Memoization

Snippets

/**

* JavaScript Momoization

* @param {string} func name of function / method

* @param {object} [obj] mothed's object o09电竞平台官网r scope correct09电竞平台官网ion object

*

* MIT / BSD license

*/

function Memoize(func, obj){

var obj = obj || window,

func = obj[func],

cache = {};

return function(){

var key = Array.prototype.join.call(arguments, '_');

if (!(key in cache))

cache[key] = func.apply(obj, arguments);

return cache[key];

}

}

var fib = {

fib: function(n){

if (n == 0 || n == 1)

return 1;

return this.fib(n-1) + this.fib(n-2);

},

fib_memo: function(n){

if (n == 0 || n == 1)

return 1;

return this.fib_memo(n-1) + this.fib_memo(n-2);

}

}

fib.fib_memo = Memoize('fib_memo',09电竞平台官网 fib);

测试 fib.fib(30)

测09电竞平台官网试 fib.fib_memo(30)

运行代码



上一篇:雷竞技下载官方版:一棵小草的坚守新闻频道中国青年网
下一篇:电竞下载app送彩金:《环球时报》社评:向李文亮医生致以敬意