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

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

後続の実行grep同じクエリ(および同じファイルに対する別のクエリ)に対する最初の実行よりもはるかに高速です(大容量ファイルを検索すると効果が容易に目に見えます)。

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

grep後続の検索で結果をより早く返すメカニズムは何ですか?

答え1

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

答え2

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

grepのパフォーマンスを担当するキャッシュはVFSバッファキャッシュです。他のキャッシュはinodeとディレクトリに使用されますが、これらのキャッシュはここでは機能しません。

詳細については、Linuxドキュメントプロジェクト:9.2仮想ファイルシステムを参照してください。http://tldp.org/LDP/tlk/fs/filesystem.html

答え3

もしあなたならはいキャッシュされたgrepのバージョンを見つけるには、次を参照してください。https://stackoverflow.com/questions/7734596/grep-but-indexable

関連情報