LoginSignup
6
6

More than 5 years have passed since last update.

高速化したGNU grepをインストール出来ない環境でも高速化

Posted at

高速化したGNU grepをインストールする
という記事と、そこで引用されている
いまさらgrepが10倍高速化したのはなぜか
を読んでいたところ、以下のような記述がありました。

そこで発想を変えて、検索される文字列を同値な正規表現にあらかじめ変換すると速くなった。
つまり「foo」という文字列を検索するときは「[fF][oO][oO]」という正規表現に変換してから検索する。

「あれ、つまり旧バージョンのGNU grepでも-iのかわりに正規表現指定すれば速くなるんじゃね?」と思い、試
してみた結果が以下になります。

grepのバージョンは2.5.1です。

$ grep --version
egrep (GNU grep) 2.5.1

適当なファイル群を大文字小文字を問わない「test」で検索した結果が以下です。

$ time grep -r -i test * | wc -l
60929

real    0m15.540s
user    0m8.221s
sys     0m7.295s

$ time grep -r [tT][eE][sS][tT] * | wc -l
60929

real    0m7.295s
user    0m6.519s
sys     0m0.616s

他にも何パターンか試してみましたが、大体半分程度まで処理時間が短縮されました。
長い文字列だと投入自体が面倒となるかもしれませんが(bashrcに関数記載で上手く処理出来れば良いですが)、既に構築済みの環境等で今更grepのバージョンアップをするのも…でも大文字小文字区別なしでの検索を実施してて処理時間が…、というような稀にある?環境では何かの役に立つかと思われます。

6
6
2

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
6
6