同じクエリ(および別のクエリですが、同じファイル)での grep
の後続の実行は、最初の実行よりもはるかに高速です(効果は簡単にわかります)。大きなファイルを検索する場合)。
これは、grepが検索に使用される構造のある種のキャッシュを使用していることを示していますが、インターネットで参照を見つけることができませんでした。
grep
が後続の検索でより速く結果を返すことができるメカニズムは何ですか?
Grep自体ではありませんが、ファイルシステム自体が最近読み取ったデータをキャッシュすることが多く、grepはディスクではなくメモリを効率的に検索するため、後の実行が速くなります。
Linuxおよび* NIXシステムは、ファイルシステム(VFSを通じて抽出)とユーザーレベルのプロセスの間にあるさまざまなキャッシュを利用します。したがって、それはgrepではなく、キャッシングを行うファイルシステムではなく、オペレーティングシステムです。
Grepパフォーマンスの原因となるキャッシュは、VFSバッファーキャッシュです。他のキャッシュはiノードとディレクトリ用ですが、これらはここでは機能しません。
詳細については、次を参照してください:Linux Documentation Project:9.2仮想ファイルシステム http://tldp.org/LDP/tlk/fs/filesystem.html
そして、もしあなたがareキャッシュされたバージョンのgrepを探しているなら、チェックアウト https://stackoverflow.com/questions/7734596/grep- but-indexable