次のように作成されたファイルポインターを使用して、バイナリファイルを大量に呼び出して呼び出すfread
スクリプトがあります。fseek
$fp = fopen('r','mybinaryfile');
スクリプトは、バイナリ内の約 2,500 個の個別のファイルを処理します。各ファイルは多数のfseek
andfread
呼び出しを引き付けます。そのため、ファイル ポインターに対する操作の合計は、おそらく 20,000 をはるかに超えます。
ファイル ポインタを使用したこれらの呼び出しのそれぞれが$fp
、ディスク上での物理的な読み取りアクションになると考えるのは正しいでしょうか?
もしそうなら、ファイル全体をメモリにロードして、そのように操作する方が良いのではないかと思います。そうでしょうか?
現在、このスクリプトを実行すると、約 20 秒かかります。私には改善の余地があるように思えます。
編集:また、ファイルをメモリに入れることができる場合、ポインターアプローチに固執しながら、それはどのように達成されますか? ファイルはそれぞれ約 3MB しかないため、メモリ不足は問題になりません。