LoginSignup
10
12

More than 5 years have passed since last update.

grepとackとagの検索速度

Posted at

なんか巷の記事によると速度は

ag > ack > grep

の順に速いって風潮だけども、実感としてgrepがそんなに遅くない思っていたので調べてみました...

結果

詳しい話は後にして、結果は

GNU grep BSD grep ag ack
Linux 0.56s NaN 0.96s 18.64s
Linux 再起動直後 23.50s NaN 22.31s 41.81s
Mac book air 1.26s 12.50s 3.47s 23.64s
Mac book air 再起動直後 24.15s 43.86s 8.56s 72.21s

キャッシュってめっちゃ効いてる!!!!
あれ、ack遅い...
検索しないようなファイルが増えたら、早く感じるのかな...?

調べ方等

調べ方はgithubにあるlinux kernelのrepositoryで検索してかかった時間!
repositoryのtop directoryで検索した結果...

$ time -p ag clock  >/dev/null
real 0.96
user 1.72
sys 1.60

$ time -p grep -r  clock * > /dev/null
real 0.56
user 0.39
sys 0.17

$ time -p ack clock * > /dev/null
real 18.64
user 18.14
sys 0.47

という結果が得られました!
ファイルシステムのキャッシュが効いてるかもしれないので、各コマンドを再起動後やってみた...

$ time -p ag clock  >/dev/null
real 22.31
user 1.05
sys 0.87

$ time -p grep -r  clock * > /dev/null
real 23.50
user 1.26
sys 1.45

$ time -p ack clock * > /dev/null
real 41.81
user 20.36
sys 1.47

巷の記事はMacでやってるのが多いので... grepが遅いってのはBSDのgrepだからか!?ということでMacでも試してみた。

$ time -p ag clock  >/dev/null
real 3.47
user 5.35
sys 1.43

$ time -p grep -r  clock * > /dev/null
real 12.50
user 12.35
sys 0.48

$ time -p ack clock * > /dev/null
real 23.64
user 22.15
sys 1.48

ということでGNU grepでも試してみた!

$ time -p ggrep -r clock * > /dev/null
real 1.26
user 0.66
sys  0.59

macでも再起動後試してみた!

$ time -p ag clock  >/dev/null
real 8.56
user 6.25
sys 6.84

$ time -p grep -r  clock * > /dev/null
real 43.86
user 23.00
sys 6.37

$ time -p ggrep -r  clock * > /dev/null
real 24.15
user 2.04
sys 8.57

$ time -p ack clock * > /dev/null
real 72.21
user 46.07
sys 10.14

まとめとか

ag ~ GNU grep > BSD grep > ack

って感じだった。

コンパイル等で検索したくないファイルが増えたら、agとackは早く感じるかもしれない...

概ね再起動後の速度は20秒くらい遅くなってるからファイル読み込みにそれくらいかかってるって事かな?

再起動後のMac book airでのagの速度だけ何かおかしいが、SSDなことが関係してるのだろうか?

とりあえず、BSD grepとack使わない方がよさげ。
GNU grepか、機能豊富なのがいいならagにしとけって事かな?

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12