12
mmap()と読み取りブロック
サイズが100GB以上になる可能性のあるファイルを処理するプログラムに取り組んでいます。ファイルには、可変長レコードのセットが含まれています。私は最初の実装を稼働させており、特に入力ファイルが何度もスキャンされるので、特にI / Oをより効率的に行うことで、パフォーマンスの改善に向けています。 mmap()C ++のfstreamライブラリを介したブロックの使用と読み取りの経験則はありますか?私がしたいことは、ディスクから大きなブロックをバッファーに読み込み、バッファーから完全なレコードを処理して、さらに読み込むことです。 'dブロックはページサイズの境界(私の理解)にある必要があり、レコードがページ境界を越えて潜在的に好きになるmmap()可能性があるため、コードは非常に複雑になるmmap可能性があります。ではfstream、私たちが読んブロックに限定していないことからS、私はページ上の嘘は、境界をサイズのことを、レコードの開始をシークして、もう一度読み始めることができます。 最初に完全な実装を実際に作成せずに、これらの2つのオプションをどのように決定できますか?経験則(例:mmap()2倍高速)または簡単なテスト?