gpt4 book ai didi

c++ - LevelDB 与 std::map

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:56 24 4
gpt4 key购买 nike

在我们的应用程序中,我们使用 std::map 来存储(键,值)数据并使用序列化将该数据存储在磁盘上。通过这种方法,我们发现磁盘 I/O 是性能瓶颈,并且使用键查找值不是很快。

我遇到了 LevelDB 并考虑使用它。但我有一些问题。

  1. LevelDB 的文档说它是为(字符串,字符串)键值对制作的。这是否意味着我不能用于自定义键值对?
  2. 看来 std::map 和 LevelDB 之间的区别在于 LevelDB 是持久的,而 std::map 在内存中工作。那么这是否意味着磁盘 I/O 瓶颈对于 levelDB 来说会更成问题。

更具体地说,是否有人可以解释 LevelDB 是否比 std::map 更好?

PS:我尝试使用 hash_map,但它似乎比 std::map

最佳答案

LevelDB 只是做一些不同于 std::map 的事情。

你真的是说你想要 std::map 的(高性能)持久性吗?

  • 使用自定义分配器查看 std::map。从内存映射区域分配条目并使用 fsync 以确保信息在关键时刻及时到达磁盘。

  • 也许将它与 EASTL 结合(它拥有更快的 std::map 并与自定义分配器一起茁壮成长 - 事实上它们没有默认分配器)

  • 查看调整您的 hash_map (std::unorderded_map);如果 hash_maps 比较慢,你应该研究 (a) loadfactor (b) hash function tuning

  • 最后但同样重要的是:评估使用 Boost Serialization 对您的 map 进行二进制序列化(无论您选择何种实现)。根据我的经验,Boost 序列化性能是最重要的。

关于c++ - LevelDB 与 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7804692/

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