Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
47
Help us understand the problem. What is going on with this article?
@quattro_4

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

More than 5 years have passed since last update.

いまさら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 で特定のディレクトリを無視

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

47
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
47
Help us understand the problem. What is going on with this article?