CPUが実行されていないときにgrepは何をしますか?

CPUが実行されていないときにgrepは何をしますか?

一致するものを見つけると、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つの簡単な部分

おすすめ記事