Javascript记忆

1 javascript memoization

有人可以使用Javascript提供一个简单的记忆功能.我在网上搜索时发现了一些文章,但我没有看到很多.我找到的最好的文章是这个:

http://alivedise.github.io/blog/2012/12/22/javascript-memorization/

我理解缓存是什么,但这个例子对我来说太复杂了.我希望这里的任何人都可以提供一个简单的功能和电话,这样我就可以接受并开始更深入地理解这一点.

谢谢

Dre*_*kes 5

我认为你要找的是备忘录.

来自维基百科:

memoization是一种优化技术,主要用于通过函数调用来避免重复计算先前处理的输入的结果来加速计算机程序

有一个很好的文章在这里和另一SO质疑这里.

您通常使用memoization来降低重复计算始终相同的结果的成本.任何性能改进都是以为缓存结果分配内存为代价的.

代码中的一个简单示例:

var cachedResult;
function doHeavyCalculation()
{
    if (typeof(cachedResult) !== 'undefined')
        return cachedResult;

    // no cached result available. calculate it, and store it.
    cachedResult = /* do your computation */;
    return cachedResult;
}
Run Code Online (Sandbox Code Playgroud)

有一些JavaScript框架支持memoizing任何函数,它们基本上通过装饰函数以可重用的方式为您提供这个样板代码.


kes*_*ert 5

我认为您的意思是记忆,基本上是指记住您已经计算出的内容。以下是使用记忆的斐波那契算法。

var cache = {1:1, 2:1};
function fib(n) {
    if(!cache[n]) // Have we already calculated this value?
       cache[n] = fib(n - 1) + fib(n - 2)  // Calculate and store it

    return cache[n]
}
Run Code Online (Sandbox Code Playgroud)