いままで文字列検索ツールといえばgrep、grepは古いといえばag、だったが、それよりも高速なhighwayというツールがあるらしい。 どれくらい速いのだろう?早速導入してみよう。
highway という高速検索ツールを作りました · けんごのお屋敷
マルチスレッドのパターンマッチングツールらしい。ネイティブなC言語で書かれていて、githubに上がっているものだけを見れば僕でも解読できそうな気がしてくる(気がするだけ)。
早速導入して、手始めにホームディレクトリ以下でhelloという文字列を検索してみる。agと比較した。 vagrant上のUbuntuで実行した。hwおよびagを実行するたびに仮想マシンを再起動して、なるべく公平になるように努力した。
$ time hw hello ... real 1m12.380s user 0m1.992s sys 0m5.316s $ time ag hello ... real 0m42.054s user 0m4.352s sys 0m2.532s
結果としては、実際にはagの方が速い結果になっている。ただし、マルチスレッドのパターンマッチングツールと説明のあるとおり、Vagrantのシングルコアだと何か制約があるのだろうか? これくらいなら、ソースコードを見れば謎が解けるかもしれない?(知れないだけ)。