FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

高速検索ツールHighwayを導入してみる

いままで文字列検索ツールといえばgrepgrepは古いといえばag、だったが、それよりも高速なhighwayというツールがあるらしい。 どれくらい速いのだろう?早速導入してみよう。

github.com

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のシングルコアだと何か制約があるのだろうか? これくらいなら、ソースコードを見れば謎が解けるかもしれない?(知れないだけ)。