的boost :: multi_index。更快的解决方案?

时间:2012-03-04 03:36:49

标签: c++ map boost-multi-index

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

这就像魅力一样,但当datasrt足够大时问题就会发生。

我的数据集大约为10M,订购索引需要+ 350secs,插入时需要80secs散列索引(无序)。
与map(pair,double)数据结构相比,这是一个相当长的时间,只需要25秒。

有没有人有任何想法提高计算速度?内存消耗还可以,但速度对我来说真的很重要。

2 个答案:

答案 0 :(得分:0)

您是否考虑使用实际数据库,例如SQLite?当你想要为元素和10 +百万元素提供多个索引时,这通常就是你正在寻找的东西。

如果基于SQL的数据库不可用,则可以使用non-SQL-based database。重要的不是特定的数据库;只是你正在使用某种形式的数据库。

答案 1 :(得分:0)

multi_index_container中添加索引需要付出代价:粗略地说,如果你有四个索引插入就像插入四个不同的单索引图一样慢(事实上它更快,如你的数字显示,自80 <4 * 25。) 在你的特定情况下,你可以摆脱最后一个索引:只使用复合键的东西作为你的第一个索引,因为它将支持lang1-only支持以及(lang1,lang2)查询。