0

データには、数十億の ID スコアのペアなどの情報が含まれています。これらのペアの情報にすばやくアクセスするには、検索の時間の複雑さが O(1) であるため、ハッシュ テーブル コンテナーを使用する予定です。生データが約 80G であることを考えると、検索アプリケーションを実行する必要があるたびにデータを RAM にロードしたくありません。私がやりたいことは、ハッシュテーブルを一度生成し、それをファイルシステムの存続期間を維持して RAM に保存し (RAM の消費は基準ではありません)、さまざまなアプリケーションで検索することです。

私の限られた理解に基づいて、「メモリマップファイル」(ブーストC++ライブラリ)を使用できました。しかし、私は質問があります:

1)マップされたファイルに書き込むときにハッシュテーブルのデータ構造を維持することは可能ですか? 2) 既存のファイルを RAM にマップするのにどれくらいの時間がかかりますか?

回答/コメント/提案は大歓迎です!

ありがとう、

4

1 に答える 1

0

1)はい。ファイルは、メモリと同じように、単なるバイトです。

2)マッピングの作成は事実上瞬時に行われます。64ビットOSを除いて、一度にすべてを連続してマップすることができないノード。もちろん、ファイルキャッシュが使用しているマップの部分を保持できない場合は、ディスクから読み取る必要があります。

IDの大きさはどれくらいですか?ペアの大きさはどれくらいですか?参照の局所性はどのくらいありますか?(使用頻度の高いペアと使用頻度の低いペアはありますか?)存在しないペアを検索する頻度はどれくらいですか。データはほとんど読み取られていますか?それを行うためのより良い方法があるかもしれません。最適とは言えない道にとらわれないように、より幅広い質問から始めることを強くお勧めします。

于 2012-06-28T03:44:25.270 に答える