grepコマンドの時間を正確に合わせる方法は?

grepコマンドの時間を正確に合わせる方法は?

これら2つのコマンドの速度を比較したいです。

grep pattern1 files* 
grep pattern2 files* 

残念ながら、最初のgrepはほとんどのファイル*をメモリバッファに読み込むため、2番目のgrepは非常に高速に実行されますが、間違った理由があります。

Linux(Fedora 11)に「何かテストしているので、ディスクの読み取りキャッシュを停止してください」と知らせる方法は?

答え1

「キャッシュを一時停止します」と簡単に言うことはできないようです。しかし、あなたができることは、各実行前にキャッシュを削除するようにシステムに指示することです。

rootユーザーとして:

sync; echo 3 > /proc/sys/vm/drop_caches

(この内容はカーネル文書に記載されています。ドキュメント/sysctl/vm.txt、これは私たちのいくつかのように、値1、2、または3が何をしているのかを常にすぐに覚えられない場合に便利です。 )

もちろん、キャッシュを埋めてキャッシュのパフォーマンスを比較してみてください。 (どちらも役に立つ数字だと思います。)

答え2

このようなタイミングをとるとき、通常は最初に実行してキャッシュを埋めます。その後、時間を使用してコマンドを実行します。このようなものをテストするときは、I/O時間よりもCPUとランタイムに注意を払う必要があります。

それにもかかわらず、完全に正確なタイミングを得ることは困難です。入力ファイルがバッファに使用可能なメモリサイズを超えると、バッファキャッシュを介してすべてのファイルを繰り返すことができます。それ以外の場合は、バッファキャッシュ内のすべてのデータにアクセスできます。実際の生活では、バッファリングされたデータとディスクから読み取ったデータが混在していることが多いです。

関連情報