2012-03-04 8 views
1

私は昨日質問を掲載しましたし、私はmulti_mapを使用してこれを解決: Having a composite key for hash map in c++Boost :: multi_index。より迅速なソリューション?

これは魔法のように動作しますが、datasrtが十分に大きいときに問題が起こります。

私のデータセットは約10Mもの大きさで、順序付きインデックスでは+ 350秒、挿入用にはハッシュインデックス(順序なし)で80秒かかる。
マップ(ペア、ダブル)データ構造に比べて、これはわずか25秒しかかかりませんでした。

計算速度を向上させる考え方はありますか?メモリ消費は問題ありませんが、スピードは私にとっては重要です。

答えて

0

SQLiteのような実際のデータベースを使用することを検討しましたか?要素のインデックスと10 + 100万のインデックスが必要な場合は、一般的に探しているものです。

SQLベースのデータベースを使用できない場合は、non-SQL-based databaseを使用できます。それは重要な特定のデータベースではありません。あなたは何らかの形のデータベースを使用しています。

+0

いいえ残念ながら私はSQLを使用できません。 – devEvan

+0

@devEvan:編集を参照してください。 –

0

multi_index_containerにインデックスを追加すると、挿入時に価格がかかります:大まかに言えば、4つのインデックスを挿入すると、4つの異なる1つのインデックスマップに挿入すると同じくらい遅くなります(実際には、 80 < 4 * 25) 最後のインデックスを取り除くことができます:lang1のみのサポートと(lang1、lang2)クエリをサポートするため、コンポジットキーを最初のインデックスとして使用してください。

関連する問題