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


9

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

grep pattern1 files* 
grep pattern2 files* 

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

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


おそらくもっと賢い答えがあります...しかし、ディレクトリ構造を複製することができるので、同じファイルを処理することはなく、キャッシュの問題もありません!
nico

1
余談ですが、Fedora 11は2010年6月にサポートが終了しました。今がアップグレードの時です。次のFedora 15リリースは本当に素敵に見えます。あなたは長寿命をより安定的な何かが必要(とあなたは11に残っているかもしれないので、同じように聞こえる)場合や、RHEL6またはいずれかの日になりましたがありますCentOSの6
mattdm

RH 7.3からRH 7.3にアップグレードするのに永遠にかかりました!アップグレードは物事を壊し、私を怖がらせます。
バリーカーター、2011年

2
キャッシュをオフにすると、パターンマッチングの速度ではなく、ドライブの速度のベンチマークが得られます。他の人が示唆するように、最初のコマンドを2回実行するだけです。最初はキャッシュを準備し、2番目はベンチマークを行います。
アレックス

試してみますが、私の主な問題はディスク速度です... grepを実行すると、ハードドライブが異常になります。うーん、そうですね、それは、grepの最適化がまったく役に立たないことを意味するかもしれません...取得するデータの量を最適化する必要があります。
バリーカーター2011年

回答:


11

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

ルートとして:

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

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

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


1
echo 1ページキャッシュのみを削除し、ディスクキャッシュは削除しません。
jsbillings 2011年

@jsbillings —ええ、はい。修繕。
mattdm 2011年

信じられないほど些細な問題:私は「>>」ではなく「>>」を実行しなければなりませんでした
バリーカーター2011年

@barrycarter:本当に?ハァッ!
mattdm 2011年

3
@barrycarter:おそらくシェルに-o noclobberを設定しているため、>を使用して既存のファイルを上書きすることはできません。
jsbillings 2011年

1

このようなものをタイミングするとき、私は通常、最初にそれを実行してキャッシュを準備します。次に、時間を使用してコマンドを実行します。このようなものをテストする場合は、CPUと経過時間についてはもっと気にする必要があり、I / O時間については気にする必要がありません。

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


IRL、私はこのコマンドをたまにしか実行しないので、files *の内容はキャッシュされません。そのような状況で高速に実行できるようにgrepを最適化しようとしています。files *のコンテンツが既にキャッシュにある場合、1秒未満で実行されます(出力はエンドユーザー向けであるため、最適化しても意味がありません)
Barrycarter

2
@barrycarter。ファイルがキャッシュされておらず、キャッシュが1秒未満で実行されている場合は、最適化の機会は多くないと思います。ファイルをより高速なストレージに移動すると、最適化される可能性があります。
BillThor 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.