上記の情報を考えると、私mmap
は良い候補だと思います。私が言ういくつかの理由があります: 1. 実際にその部分が必要になるまでファイルを実際にロードすることなく、ファイル全体を提供します。これは高速読み込みの利点ですが、最終的にすべてのバイトを処理する場合 (またはファイルのすべての 4KB セクションに触れる場合) は、大きな違いはありません。2.mmap
は、データをディスクからページに 1 回だけコピーします。fread
私のテストでは、これは Linux を使用して読み取るよりも効率的です(また、かなり大きな読み取りの場合のとread
の違いは無視できることに注意してください。fread
read
FILE
ただし、私の経験では [これまでにさまざまな形式を試してきました]。
いつものように、ベンチマークは常にインターネットでの質問よりも優先されます。したがって、私が上で述べたことはあなたの状況では正しくないことに気付くかもしれません. そして、指摘したように、コードが十分に優れていると、コードのオーバーヘッドは、ディスクがデータを配信できる速度によって小さくなります.ディスク転送速度がボトルネックになるところです。その時点でできることは、他のオーバーヘッドをできるだけ少なくし、ディスクがデータを配信した後、できるだけ早くアプリケーションにデータを取得することだけです。
「1 秒あたりのバイト数」の適切なベンチマークは、使用することです (これはファイルを書き込みます。その後、ディスクからどれだけうまく読み取れるかを確認し dd if=/dev/zero of=somefile bs=4K count=1M
たい場合があります。dd if=somefile of=/dev/null bs=4K