web-dev-qa-db-ja.com

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

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

grep pattern1 files* 
grep pattern2 files* 

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

Linux(Fedora 11)にどのように伝えるか:「何かをテストしているので、ディスク読み取りのキャッシュを停止してください。」

9
barrycarter

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

ルートとして:

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

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

または、もちろん、キャッシュを準備して、キャッシュされたパフォーマンスを比較します。 (どちらも便利な数字だと思います。)

11
mattdm

このようなタイミングをとるとき、私は通常、最初にそれを実行してキャッシュを準備します。次に、時間を使用してコマンドを実行します。このようなテストでは、CPUと経過時間についてより懸念し、I/O時間についてはあまり懸念しないでください。

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

1
BillThor