比较“回忆录”和“缓存”这两个术语与阅读维基百科回忆录时,人们是否同意使用“回忆录”一词意味着
如果您做的是上面提到的其他事情,那么其中之一就是缓存一个结果?
发布于 2010-09-15 22:43:34
我相信回忆录一个函数允许您在本地缓存一个函数的结果为给定的一组参数。几乎就像:
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“块被自动和更有效地处理,并且随着函数被用不同的参数调用而被添加到其中。
请注意,您只能回溯一个确定性且没有副作用的函数。这意味着函数的结果只能依赖于其输入,并且在运行时不能更改任何内容。
简而言之,回忆录是非常特殊情况下的功能本地缓存,因此它是常规缓存的专门化。
发布于 2010-09-15 22:46:27
我不确定,但我的理解是,回忆录要求给定一个函数y = f(u)
,f
必须是确定性的(也就是说,对于给定的u
,y
必须总是相同的),这样才能存储f
的结果。
对我来说,缓存似乎更多地是一个问题,它决定了哪些数据被频繁访问,并将这些数据保存在快速存储中。
前者是确定性的,后者是随机的。
发布于 2010-09-15 22:36:10
据我所知,是的,回忆录是缓存,用来加速一个必要的时间程序,比如一个计算数字序列的程序(例如斐波纳契序列)。
https://stackoverflow.com/questions/3722354
复制相似问题