比较术语“memoize”和“cache”并阅读 Wikipedia's memoization entry ,人们是否同意使用术语“memoize”意味着
如果您正在做上述以外的任何其他事情,那么只是缓存结果?
最佳答案
我相信内存一个函数可以让你在本地缓存给定参数集的函数结果。这几乎就像:
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/