大量のデータ (GB 単位) を処理する必要があるアプリケーションに取り組んでいます。いつでも一度にすべてのデータが必要なわけではありません。データをセクション化し、特定のインスタンスのセクションでのみ作業する (したがって、メモリに取り込む) ことは問題ありません。
大量のデータを操作する必要があるほとんどのアプリケーションは、通常、メモリ マップされたファイルを使用して操作していると読んだことがあります。メモリ マップド ファイルについてさらに読むと、メモリ マップド ファイルからのデータの読み取り/メモリ マップド ファイルへのデータの書き込みが通常のファイル IO よりも高速であることがわかりました。
私が持っているクエリは次のとおりです。
- ファイル IO にメモリ マップド ファイル (boost::file_mapping を使用する予定で、Windows で作業中) を使用することと、ファイル ストリームを使用することの違いは何ですか?
- ファイル ストリームを使用する場合 (従来のハード ディスク 7200 rpm) と比較して、メモリ マップ ファイルの場合、データの読み取り/書き込みはどれくらい高速になると期待できますか?
- このような膨大な量のデータを処理するには、メモリ マップ ファイルが唯一の方法ですか? これを行うより良い方法はありますか(私のユースケースを考慮して)?