美文网首页
JS优化计算结果Memoization

JS优化计算结果Memoization

作者: LHQ丶 | 来源:发表于2021-07-24 11:29 被阅读0次

Memoization用于优化比较耗时的计算,通过将计算结果缓存到内存中,这样对于同样的输入值,下次只需要中内存中读取结果。

function memoizeFunction(func) {
    var cache = {};
    return function()
    {
        var key = arguments[0];
        if (cache[key])
        {
            return cache[key];
        }
        else
        {
            var val = func.apply(this, arguments);
            cache[key] = val;
            return val;
        }
    };
}

var fibonacci = memoizeFunction(function(n) {
    return (n === 0 || n === 1) ? n : fibonacci(n - 1) + fibonacci(n - 2);
});

console.log(fibonacci(100)); // 输出354224848179262000000
console.log(fibonacci(100)); // 输出354224848179262000000

代码中,第2次计算fibonacci(100)则只需要在内存中直接读取结果。这是使用闭包这一特性的实际例子。

相关文章

网友评论

      本文标题:JS优化计算结果Memoization

      本文链接:https://www.haomeiwen.com/subject/uckkfctx.html