- CreateFileMapping と MapViewOfFile を実行し、memcpy などの関数で I/O を実行します。
- Read/WriteFile を使用するだけです。
最初のものは2番目よりも速いですか?わかりません。
なぜ速いのですか?
セクション オブジェクトを使用すると、VMM またはキャッシュ マネージャーからより多くのキャッシュの利点を得ることができますか?
最初のものは2番目よりも速いですか?わかりません。
なぜ速いのですか?
セクション オブジェクトを使用すると、VMM またはキャッシュ マネージャーからより多くのキャッシュの利点を得ることができますか?
ファイル自体がページングストレージとして使用されるため、ページアウトが発生した場合のファイルメモリマッピングは高速です。
メモリマップトファイルのメモリが変更されていない場合、データはすでにファイルにあり、Windowsはディスクからページを再読み取りできるため、ページをページングファイルにフラッシュする必要はありません。.EXEファイルと.DLLファイルはこのメカニズムを使用して読み込まれるため、独自のページストレージになります。
メモリマップトファイルのメモリが書き込まれる場合、ページアウトはページングファイルが使用された場合と同じになります。ディスク上の同じ場所が使用されるため、おそらくより高速になります(NTFS最適化の対象となります)。
プレーンAPIは、ページファイルでバックアップされたメモリを消費して、メモリ内にファイルの内容を保持します。
わずかに異なる観点では、メモリマップトファイルが実際に内部で読み取り/書き込みファイルAPIとして使用される可能性があるため、両方のAPIが最適化されているため、より低い抽象化を使用しているときにマイクロ最適化が得られます
どちらのメカニズムもVMM/キャッシュマネージャーを採用します。
ReadFile/WriteFile を使用すると、いくつかの余分なメモリ ブロックのコピー操作が必要になるため、MMF を使用するよりも遅くなります。もう 1 つの質問は、どれだけ遅くなるかということです。これは、自分で測定する必要があるものです。