【问题标题】:FIFO cache vs LRU cacheFIFO 缓存与 LRU 缓存
【发布时间】:2013-03-26 18:16:31
【问题描述】:

对于这么简单的问题,我真的很抱歉。我只是想确保我正确理解 FIFO 缓存模型,我希望有人能帮助我:) 如果缓存已满,LRU 缓存会删除最近最少访问的条目。如果缓存需要可用空间(例如,如果 'a' - 'v' - 'f' - 'k' 是缓存中的条目,而 'a' 是如果需要可用空间,则缓存将删除最旧的条目)。

我说的对吗?

【问题讨论】:

    标签: caching data-structures hash fifo


    【解决方案1】:

    你是对的。

    将 FIFO 想象为穿过隧道的汽车。第一辆进入隧道的汽车将是第一个驶出另一侧的汽车。

    将 LRU 缓存视为清理车库。你会扔掉你很长一段时间没有使用的物品,并保留你经常使用的物品。该算法的演变(对简单 LRU 的改进)将丢弃长时间未使用的物品,而且如果您需要它们,更换也不昂贵。

    【讨论】:

    • FIFO优于LRU的一个优点是在FIFO中,缓存命中不需要修改缓存。在 LRU 中,每个缓存命中还必须将检索到的值重新定位到前面。我们在 pyparsing 的 Packrat 解析重新设计中充分利用了 FIFO 缓存,缓存未命中率仅略有增加。
    • 同意,不过如果缓存块很大,您可以将索引移动到缓存数据而不是数据本身。
    【解决方案2】:

    是的,LRU 缓存基于最近最少使用缓存中的对象,但 FIFO 是基于对象被缓存的时间。

    【讨论】:

      【解决方案3】:

      是的,没错。 FIFO 意味着先进先出,即严格按照到达顺序考虑(在这种情况下删除)元素。 LRU 是最近最少使用的,最长时间没有使用的缓存元素被驱逐(预感很快就不需要了)。

      【讨论】:

        猜你喜欢
        • 2011-01-31
        • 1970-01-01
        • 1970-01-01
        • 2011-05-25
        • 2011-03-02
        • 1970-01-01
        • 2011-06-17
        • 2015-12-16
        • 2017-07-02
        相关资源
        最近更新 更多