0
最近、私は高速検索を実行するコマンドラインツールを検索していました。これらのうち、Agがgrep、ack、siftよりも早く伝えられるとの私の理解です。 grepが最も遅い。Agがgrepよりも遅いのはなぜですか?
ファイルに300.000文字列があり、特定の部分文字列を持つ文字列を見つけて返します。
time grep 'substring' file.txt
real 0m0.030s
user 0m0.009s
sys 0m0.008s
。
time ag 'substring' file.txt ----> 5 secs
real 0m0.083s
user 0m0.038s
sys 0m0.014s
私は何か間違っているのですか、それとも私はそれを使用しようとしている方法で使用されていませんか?
ここで重要な点は、これらの2つのコマンドライン呼び出しが実際には同じことをしないことです。 'ag'呼び出しは、大文字と小文字を区別しないマッチング*を行い、*は行を数えます。 'grep'はどちらもしません。 –
@ThomasOrozcoしかし、agは "grepのより高速な代替"として記述されています。もしagの機能がgrepの機能と異なるならば、 – RetroCode
Agは、コードベースを検索するために設計されています。 grepよりも高速です。検索すべきファイルを探し出し、集計などで処理する方が効率的だからです。つまり、grepとAgは異なる目的のための異なるツールです。あなたが提供した意図的な例は、単にgrepが輝き、Agはそうでないものです。このトピックについて多くのことが言及されていますが、実際には短い答えはありません。 [このブログの記事](http://blog.burntsushi.net/ripgrep)(これは別のツールに焦点を当てています: 'rg')は、「より速い」ということを決定する複雑さの良い調査です。 –