比较术语“memoize”和“cache”并阅读 Wikipedia's memoization entry ,人们是否同意使用术语“memoize”意味着

  • 内存的结果保存在进程的内存中;换句话说,它没有存储在 memcached 中。
  • 一个只“内存”函数,如数学函数,例如斐波那契,而不是可能随时间变化的值,例如网站上的注册用户数量?

  • 如果您正在做上述以外的任何其他事情,那么只是缓存结果?

    最佳答案

    我相信内存一个函数可以让你在本地缓存给定参数集的函数结果。这几乎就像:

    function f(a, b, c) {
      if (a==1 && b==2 && !c) {
        return 5;
      } else if (a==1 && b==3 && !c) {
        return 17.2;
      } /* ... etc ... */
    
      // some horribly long/complex/expensive calculation
      return result;
    }
    

    但是最初的巨大“if”块被自动处理并且效率更高,并且随着使用不同参数调用函数而被添加。

    请注意,您只能记住一个确定性且没有副作用的函数。这意味着函数的结果只能依赖于它的输入,并且它在运行时不能改变任何东西。

    简而言之,memoization 是非常特殊情况下的函数本地缓存,因此它是常规缓存的特化。

    关于memoization - "memoize"一词意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3722354/

    10-15 18:10