gpt4 book ai didi

c++ - 在进程内存中缓存大量数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:45 26 4
gpt4 key购买 nike

我在金融行业工作。我们想推出用于数据处理的数据库命中。这是非常昂贵的。因此,我们计划采用按需缓存逻辑。 [运行时插入和运行时查找]

是否有人为超过 1000 万条记录实现缓存逻辑?每条记录大约 160 - 200 字节。

我用不同的方法面临以下缺点。

  1. 不能使用STL std::map 来实现键基缓存注册表。插入和查找 200000 条记录后非常慢。
  2. 共享内存或内存映射文件是缓存数据的一种开销,因为这些数据不会跨进程共享
  3. 使用 sqlite3 内存和平面文件应用程序数据库可以值得。但是在 2-3 百万条记录之后,它的查找速度也很慢。
  4. 进程内存可能对其自身的内核内存消耗有一些限制。我的假设在 32 位机器上为 2 gig,在 64 位机器上为 4 gig。

如果您遇到过这个问题并以任何方式解决了,请给我一些建议。

谢谢

最佳答案

如果你的缓存是一个简单的键值存储,你不应该使用 std::map,它有 O(log n) 查找,但是 std::unordered_map,它有 O(1) 个查找。如果您需要排序,您应该只使用 std::map

听起来你追求的是性能,所以你可能想看看 Boost Intrusive .您可以轻松组合 unordered_maplist 来创建高效的 LRU。

关于c++ - 在进程内存中缓存大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com