memoization - "memoize"一词意味着什么?

标签 memoization

比较术语“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/

    相关文章:

    prolog - 有界表

    python - 最长回文子串自顶向下动态规划

    haskell - 性能问题

    java - 计算图: computing value ahead of time

    PHP:在数据库中查找一组总和为特定数字的数字

    php - 在 php 中内存斐波那契函数

    javascript - 去抖一个方法,但继续合并和内存参数

    python - 为什么我的算法超时?

    algorithm - 内存算法时间复杂度

    python - 记住一个函数,以便当我在Python中重新运行该文件时不会将其重置