问题标签 [lru]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
37457 浏览

python - 如何限制字典的大小?

我想在 python 中使用 dict,但将键/值对的数量限制为 X。换句话说,如果 dict 当前正在存储 X 个键/值对并且我执行插入,我想要其中之一要删除的现有对。如果它是最近最少插入/访问的密钥,那就太好了,但这并不是完全必要的。

如果这存在于标准库中,请节省我一些时间并指出来!

0 投票
14 回答
69172 浏览

c++ - LRU缓存设计

最近最少使用(LRU)缓存是先丢弃最近最少使用的项目,你是如何设计和实现这样一个缓存类的呢?设计要求如下:

1) 尽可能快地找到物品

2)一旦缓存未命中并且缓存已满,我们需要尽快替换最近最少使用的项目。

如何从设计模式和算法设计的角度来分析和实现这个问题?

0 投票
1 回答
3440 浏览

memcached - Memcached 的 LRU 实际上是什么意思?

Memcached 说它使用 LRU 队列来执行驱逐(混合了一些基于平板大小的规则。)当他们说最近最少使用时,他们指的是最近最少存储还是最近最少读取?他们的文档在这里似乎模棱两可。

0 投票
1 回答
1289 浏览

c - C语言中的LRU缓存设计,大小有限

我现在正在开发内存非常小的移动平台上的软件。在 I/O 瓶颈函数中,我需要使用 seek 操作从 img 文件中读取一些字节(您可以假设 seek 比直接从 memmry 中读取慢约 10 倍)。在我的测试中,这个函数被调用了 7480325 次,从 bytes_offset 6800 到 130000 读取字节,所以每个字节平均读取 100 次(有些字节读取 3~4 次,有些超过 1000 次)。

下面是我的统计。

然后我想使用 LRU 模式构建一个缓存,以使 I/O 性能更好。在其他一些问题中,我发现哈希表 + 双向链表是一个好方法。但是如何建立一个结构以最好的方式改善我的问题呢?我计划构建1300个桶,每个桶都有一个最大大小为10的双向链表。那么它需要的总内存大约是13KB。实现和维护都很简单,但我认为效率不是最好的。

在我的统计中,一些字节偏移间隔的命中率更高,而一些间隔则更少。我怎样才能建立一个结构来调整我的统计数据?

而且当我搜索一个键时,我需要遍历整个列表,大小为10。还有其他搜索效率更高的方法吗?

在某些移动平台中,更多的内存可用于缓存,而其他平台则允许更少。除了更改存储桶的大小外,如何使我的缓存适应允许的内存更改?

看来caf的方法比较好。使用大的双向链表和大的哈希表将键映射到节点条目更有意义,并且可以更多地利用 LRU。但是设计哈希函数正成为一个难题。

期待你的建议,谢谢~

0 投票
7 回答
19783 浏览

c++ - 使用 C++ 的最近最少使用缓存

我正在尝试使用 C++ 实现 LRU 缓存。我想知道实现它们的最佳设计是什么。我知道 LRU 应该提供 find()、添加元素和删除元素。删除应该删除 LRU 元素。什么是最好的 ADT 来实现这个例如:如果我使用一个元素作为值和时间计数器作为键的映射,我可以在 O(logn) 时间内搜索,插入是 O(n),删除是 O(logn)。

0 投票
4 回答
8222 浏览

python - Python:构建 LRU 缓存

我有6,00,000 entries in MongoDB以下格式:

在哪里

  • 特征可以是任何词,
  • 类别是正面的还是负面的,并且
  • count告诉一个特性在该类别的文档中出现了多少次。

我想缓存前1000个元组,让我们说不要每次都查询数据库。

如何在 Python 中构建 LRU 缓存?或者有任何已知的解决方案吗?

0 投票
1 回答
90 浏览

random - 随机选择与最近的先前选择加权

我想选择列表中的一个元素,其中每个元素的权重是自上次选择以来的时间。

我可以制作一个 LRU(最近最少使用)列表,并根据队列中的位置对函数进行加权,这将是优雅的,除了最初所有元素的权重应该相等。

只是在选择权重后将权重减去或除以一定数量在直觉上似乎是不正确的。有没有更好的方法可能使用对数或倒数等数学概念?(不是我的强项)

0 投票
2 回答
933 浏览

java - 刷新 LRU 缓存

我正在使用从 LinkedHashMap 扩展的映射来实现缓存(因此我可以实现 removeEldestEntry)。旧的实现使用常规的哈希映射,以设定的时间间隔刷新。我想知道如何使缓存中的数据保持最新。我怀疑我是否可以在特定时间刷新而不会弄乱 LRU 的要点。在数据库中查询条目上的时间戳会特别昂贵吗?

0 投票
4 回答
3777 浏览

c++ - 限制 std::set 的大小

我有一个关于 std::set 容器的简短问题。现在我正在使用推回功能喂我的套装。当然,每个 push_back 的集合都会变得越来越大。我只对最新的30个左右的元素感兴趣...较旧的元素可以删除。所以我的想法是将集合的大小限制为 30 个左右的元素,并通过这样做摆脱不需要的旧元素。但是,该集合默认不支持限制。我可以不时检查集合的大小并手动删除多余的元素。有没有更聪明的方法?

问候隆皮

0 投票
2 回答
1351 浏览

java - Android:java中最近最少使用的(LRU)算法实现?

在我的应用程序中有很多大约 1000 个位图。我必须将它们合并为单个图像。为了做到这一点,从 sdcard 加载当前需要的位图。在这个过程中,我必须回收最近最少使用的位图,其他明智的 dvm 抛出内存错误。那么任何人都可以告诉我如何在java中完成这项任务(最近最少使用)。??

谢谢你,斯里尼瓦斯