大量のデータ チャンク (~50GB) があります。私のコードでは、次のことを実行できる必要があります。
すべてのチャンクを繰り返し反復し、それらに対していくつかの計算を行います。
すべてのチャンクを繰り返し反復し、それらに対していくつかの計算を行います。各反復では、訪問されたチャンクの順序が (可能な限り) ランダム化されます。
これまでのところ、データを 10 個のバイナリ ファイル ( で作成) に分割し、boost::serialization
1 つずつ繰り返し読み取り、計算を実行しました。(2) については、10 個のファイルをランダムな順序で読み取り、それぞれを順番に処理します。これで十分です。
ただし、ファイルの 1 つを ( を使用してboost::serialization
) 読み取るには時間がかかるため、高速化したいと考えています。
の代わりにメモリ マップド ファイルを使用できますboost::serialization
か?
特に、vector<Chunk*>
各ファイルに があります。そのようなファイルを非常に迅速に読み込めるようにしたいと考えています。
vector<Chunk*>
このようなデータ構造を読み書きするにはどうすればよいですか? を参照しましたがboost::interprocess::file_mapping
、やり方がわかりません。
これ ( http://boost.cowic.de/rc/pdf/interprocess.pdf )を読みましたが、メモリ マップ ファイルについてはあまり説明されていません。vector<Chunk*>
最初にマップされたメモリに保存してから、チャンク自体を保存すると思います。そして、vector<Chunk*>
実際にはoffset_ptr<Chunk>*
、つまり、offset_ptr の配列になりますか?