一致するものを見つけると、grep
後続の検索に最初の検索よりもはるかに少ない時間がかかることがよくあります。たとえば、25秒対2秒です。明らかに、これは最後の実行のデータ構造を再利用することによって行われません。そのデータ構造は解放されなければなりません。time
でコマンドを実行し、grep
興味深い現象を発見しました。
real 24m36.561s
user 1m20.080s
sys 0m7.230s
残りの時間はどこに行きましたか?毎回より速く実行する方法はありますか? (たとえば、grep
ファイルを検索する前に別のプロセスからファイルを読み取るようにしてください。)
ベストアンサー1
それはしばしば関連していますページキャッシュ。
最初は、データをディスクから(物理的に)読み取る必要があります。
2番目に(サイズが小さいファイルの場合)、ページキャッシュに存在することがあります。
したがって、まず、次のようなコマンドを発行できます。猫(1)(大きすぎない)ファイルをページキャッシュ(RAMなど)に入れてから、2番目正規表現(1)(またはファイルを読み取るすべてのプログラム)は通常、より速く実行されます。
(たまにディスクからデータを読み取る必要があるかもしれません)
参照(時々アプリケーションには便利ですがまれに)先読み(2)&posix_fadvise(2)おそらくクレイジーウェス(2)&同期(2)&同期(2)など....
また読んでくださいLinuxAteMyRAM。
ところで、プログラムのベンチマーク時に複数回実行することをお勧めする理由もここにあります。また、これがより多くのRAMを購入するのが役に立つ可能性がある理由です(データを保存するためにすべてのRAMを使用しないプログラムを実行する場合も同様です)。
もっと知りたい場合は、次の本を読んでください。オペレーティングシステム:3つの簡単な部分