1

我昨天发布了一个问题,我通过使用 multi_map 解决了这个问题: 在 C++ 中拥有一个哈希映射的复合键

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

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

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

4

2 回答 2

0

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

于 2012-03-04T09:56:46.830 回答
0

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

如果基于 SQL 的数据库不可用,那么您可以使用非基于 SQL 的数据库。重要的不是特定的数据库;只是你正在使用某种形式的数据库。

于 2012-03-04T03:43:28.933 回答