很难理解memoization

时间:2015-08-11 09:55:45

标签: javascript node.js scripting memoization

最近,我正在阅读“好的部分”,并且正在经历一个名为 memoization 的主题,但我无法理解它。我没有得到的是,在函数执行大量时间的情况下,不会像使用大量数据保存变量那样耗费内存。如果是这种情况,那么它是如何优化的。请注意,我是java脚本的新手,我已经阅读了这个主题。

3 个答案:

答案 0 :(得分:1)

Memoization是一种简单的机制,它包含缓存计算值的结果。

  1. 这允许下一个函数调用,使用相同的参数完成, 点击缓存而不是重新计算这个值。
  2. 缓存由输入参数索引。如果论证存在 在缓存中,然后返回缓存的值。
  3. 否则,执行该函数并且新计算的值为 添加到缓存中。
  4. 如果你了解缓存机制,那么很容易理解memoization。

    据我所知,可以对他们的程序进行两种优化:

    1. 时间优化
    2. 内存优化
    3. 这完全取决于要求。

答案 1 :(得分:1)

还记得动态编程吗?在计算数字的阶乘时,你会记住阶乘直到n-1,然后将事实(n-1)乘以n。但在某些情况下,问题是不必要的呼叫,这很容易避免。

为了保存这些不必要的电话,我们可以记住它。要保存memoize结果,可以在闭包内使用数组。调用函数时,首先要检查的是它是否已经有答案,如果是,则返回答案,否则重新计算。

答案 2 :(得分:0)

如果您了解

的基础知识
  • 原型继承
  • 变量范围和
  • 闭合

article就是您所需要的。但请注意,你必须了解上面提到的JS概念