c++ - 升压::多索引。更快的解决方案?

标签 c++ dictionary boost-multi-index

我昨天发布了一个问题,我使用 multi_map 解决了这个问题: Having a composite key for hash map in c++

这很有效,但是当数据足够大时就会出现问题。

我的数据集大约有 10M 大,使用有序索引需要 +350 秒,插入哈希索引(无序)需要 80 秒。
与仅花费 25 秒的 map(pair, double) 数据结构相比,这是相当长的时间。

有人知道提高计算速度吗?内存消耗还可以,但速度对我来说真的很重要。

最佳答案

将索引添加到 multi_index_container 以插入时间为代价:粗略地说,如果您有四个索引,插入速度与插入四个不同的单索引映射一样慢(实际上它更快,如您的数字所示,因为 80 < 4*25。) 在您的特定情况下,您可以摆脱最后一个索引:只需使用复合键作为您的第一个索引,因为它将支持 lang1-only 支持以及 (lang1,lang2) 查询。

关于c++ - 升压::多索引。更快的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552093/

相关文章:

c++ - 如何在 C++ 中克隆未知动态类型的对象?

c# - 从 EntityFramework 表返回 Dictionary<int,List<Int>>

c++ - 当 KEY 为 boost::optional 参数时用于 boost 多索引的迭代器

c++ - 以最快的方式搜索 boost multi_index 容器

c++ - Shell 附加重定向替换现有文本?

c++ - 使用 Visual Studio 2010 的 CATCH 单元测试套件

python - 如何将dict的dict转换为指定格式的dict?

android - 用于处理联系人中的地址新闻的 Intent 过滤器?

c++ - boost 多索引私有(private)成员访问

c++ - std::forward_list 和序列概念要求