web-dev-qa-db-ja.com

grepはキャッシュを使用して検索を高速化しますか?

同じクエリ(および別のクエリですが、同じファイル)での grep の後続の実行は、最初の実行よりもはるかに高速です(効果は簡単にわかります)。大きなファイルを検索する場合)。

これは、grepが検索に使用される構造のある種のキャッシュを使用していることを示していますが、インターネットで参照を見つけることができませんでした。

grepが後続の検索でより速く結果を返すことができるメカニズムは何ですか?

36
Lazer

Grep自体ではありませんが、ファイルシステム自体が最近読み取ったデータをキャッシュすることが多く、grepはディスクではなくメモリを効率的に検索するため、後の実行が速くなります。

60
PaulRein

Linuxおよび* NIXシステムは、ファイルシステム(VFSを通じて抽出)とユーザーレベルのプロセスの間にあるさまざまなキャッシュを利用します。したがって、それはgrepではなく、キャッシングを行うファイルシステムではなく、オペレーティングシステムです。

Grepパフォーマンスの原因となるキャッシュは、VFSバッファーキャッシュです。他のキャッシュはiノードとディレクトリ用ですが、これらはここでは機能しません。

詳細については、次を参照してください:Linux Documentation Project:9.2仮想ファイルシステム http://tldp.org/LDP/tlk/fs/filesystem.html

19
JRW

そして、もしあなたがareキャッシュされたバージョンのgrepを探しているなら、チェックアウト https://stackoverflow.com/questions/7734596/grep- but-indexable

1
Ole Tange