【发布时间】:2025-12-12 03:20:04
【问题描述】:
我正在编写一个手动计算记忆系统(呃,在 Matlab 中)。简单的部分很简单:
- 一种在执行计算后将数据放入记忆系统的方法。
- 一种从记忆中查询和获取数据的方法。
- 一种向系统查询所有“键”的方法。
这些部分没有太多疑问。问题是我的计算机内存有限,所以有时“放置”操作必须将一些对象转储出内存。我担心“缓存未命中”,所以我想要一些相对简单的系统来删除不经常使用和/或重新计算成本不高的记忆对象。我该如何设计那个系统?我可以想象它具有的部分:
- 一种告诉“放置”操作的计算成本(相对而言)的方法。
- 一种可选地向“put”操作提示可能需要多久计算一次的方法(未来)。
- “get”操作需要注意查询给定对象的频率。
- 一种告诉整个系统要使用的最大内存量的方法(好的,很简单)。
当你达到内存限制时,它的真正核心在于“放置”操作,它必须根据内存占用、成本和有用性来剔除一些对象。我该怎么做?
对不起,如果这太模糊或离题了。
【问题讨论】:
-
如果您的问题更具体,您可能会得到更好的建议。有大量关于缓存设计的文献,但除非您更具体,否则不会有所帮助。不开玩笑,如果你的内存用完了,为什么不使用足够强大的硬件进行计算呢?如今,与设计适当的缓存行为所花费的工时相比,这非常便宜。谢谢
-
嗯,是的,谢谢。我以为我是在要求将大量文学作品简单地提炼成一些小的经验法则。回复:电脑成本与工时,你可以和我老板谈谈购买硬件,或者你可以自己付钱给我...
标签: caching matlab memoization