45
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

高速化したGNU grepをインストールする

Last updated at Posted at 2014-02-26

いまさらgrepが10倍高速化したのはなぜか を見て
MacOSXで使えるかやってみた(Snow Leopardの頃から使っているMacBookPro)

続きで特定の条件下(UTF-8以外)では遅いというのもあった
10倍速くなったと思ったら今度は200倍遅くなっていた

現在使っているgrepの確認

$ which grep
/usr/bin/grep
$ grep --version
grep (BSD grep) 2.5.1-FreeBSD

速いらしいバージョンは2.17

brewでgrepをインストール

普段brewを使っている場合はbrewでインストールする

参考にした情報

# brewを最新にする
$ brew update

# インストールの準備
$ brew tap homebrew/dupes
Cloning into '/usr/local/Library/Taps/homebrew-dupes'...

# grepのインストール
$ brew install homebrew/dupes/grep
==> Installing grep
==> Downloading http://ftpmirror.gnu.org/grep/grep-2.17.tar.xz
...
/usr/local/Cellar/grep/2.17: 14 files, 960K, built in 43 seconds

# インストール後の確認
$ /usr/local/Cellar/grep/2.17/bin/ggrep --version
/usr/local/Cellar/grep/2.17/bin/ggrep (GNU grep) 2.17
$ which ggrep
/usr/local/bin/ggrep

コマンドはggrepだった

エイリアス

コマンドを古いgrepと置き換えたい場合は、エイリアスなり、シンボリックリンクなり、PATHの変更をすると良い

ベンチマーク(性能比較)

$ time grep ...$ time ggrep ...
をある同じ条件で比較したところ数回の試行で
およそ 3min22sec vs 44sec で数倍速かった

LANG=C

$ LANG=C grep ... でも速くなるのは以前試した
併用して速くなったかは良くわからなかった

他高速化オプション

-i 大文字と小文字の区別をなくす
-I でバイナリファイルを無視して検索
--exclude-dir=PATTERN で特定のディレクトリを無視

何かおかしかったら元のやつ使って、状況に応じて使い分ければ良いと思う

45
46
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
45
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?