代码之家  ›  专栏  ›  技术社区  ›  patros

伪LRU树算法

  •  1
  • patros  · 技术社区  · 14 年前

    许多伪LRU算法的描述都涉及到使用二叉搜索树,以及在每次访问树时将标志设置为“指向”要搜索的节点。

    这导致了LRU的合理近似。然而,从描述来看,所有被视为LRU的节点都将是叶节点。有没有一个伪LRU算法处理一个静态树,它仍然可以很好地执行,同时确定非叶节点是合适的LRU候选节点?

    编辑: 我已经使用hashmaps和linkedlists实现了一个LRU。我对使用伪lru树(特别是并发读取)的性能影响很感兴趣。 这就是为什么我特别问伪lru树算法,但我应该让它更清楚。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Keith Randall    14 年前

    您始终可以使用旋转的红黑树将内部节点下推到叶。

    在这样做的时候保持树的平衡可能很困难。但是你可以选择下推哪个子树,所以也许不是不可能。。。

        2
  •  0
  •   Sidharth N. Kashyap    8 年前

    根据这里提供的基准数字 Study of Different Cache Line Replacement Algorithms in Embedded Systems ,伪LRU(PLRUm、PLRUt、MPLRU)似乎是最佳的实现候选。