爆速grep「ripgrep」をラズパイにインストールする【実測値あり】

  • 2
    Like
  • 0
    Comment

TL;DR

通常のgrepagよりも圧倒的に早いというRipGrep」(rg)をRaspbianにインストールする方法です。

MacOSXへ入れてみたり、さくらのVPS(CentOS7)に入れて見たところ非常に早かったのですが、 RaspberryPi3 + Raspbian(Jessie, Debian8.0)にインストールする場合の情報が少なかったので、軽いストレス・テスト(実測)をかねて記事を書いてみました。結論を言うと10.5GBのファイルを全文検索して30秒以上の差が出ました。

RipGrepとは

RipGrep(rg)は、grepに似たコマンドライン・ベースのUTF-8対応テキスト検索ツールです。BurntSushi氏によってRustで書かれており、Silver Searcherag)の使いやすさとGNU grepの本来のスピードを兼ね備えています。 Windows, Mac, Linux などのOSで動作します。

インストール

cd ~/
# 依存ファイルのインストール(基本デフォルトのまま進んでOK)
curl https://sh.rustup.rs -sSf | sh
sudo apt-get install debhelper
sudo apt-get install devscripts
sudo apt-get install quilt

# cargoのパスを通す
source $HOME/.cargo/env

# ripgrepのインストール
cargo install ripgrep

使い方

rg 'メキシコ'

正規表現も使えます

rg '1[^7][0-9[0-9]年'

詳しくはrg --helpコマンドでヘルプをご覧ください

実測してみた

Wikipediaからダウンロードした10ギガバイトのXMLのテキストファイルから「メキシコ」という単語を検索して、その結果をファイルに書き込み終えるまでの速度を比較してみました。

ファイルサイズ 検索単語 平均秒数 差分
grep 10.5GB 'メキシコ' 502 +35
rg 10.5GB 'メキシコ' 467 0

測定方法

コンマ何秒というレベルの差ではないため、linuxの$SECONDSを使って経過時間を測定します。

検索開始前に$SECONDSのカウンターをリセットし、検索結果をファイルに書き込んだ時点までの秒数を測定しています。

留意点として、データ量が大きいためUSB2の外付けハードディスクに保存しての測定なので本来はもう少し早いと思います。

検証データの準備

Wikipediaの日本語データを、外付けHDD(/mnt/hdd1/wikipedia)にダウンロード&展開します。10.5ギガバイト程度あるのがわかります。

$ cd /mnt/hdd1/
$ wget https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
$ bunzip2 jawiki*
$ ls -la
合計 10285620
drwxr-xr-x 3 root root        4096  7月 24 17:38 .
drwxr-xr-x 3 root root        4096  7月 15 01:36 ..
-rw-r--r-- 1 root root 10532457736  7月 22 02:23 jawiki-latest-pages-articles.xml

測定

grep

$ cd /mnt/hdd1/
$ SECONDS=0 && grep 'メキシコ' *.xml > ~/result_grep.txt && echo ${SECONDS}
分:秒
502 8:22
502 8:22
500 8:20
504 8:24
501 8:21
平均 ---
502 8:22

rg

$ cd /mnt/hdd1/
$ SECONDS=0 && rg 'メキシコ' > ~/result_rg.txt && echo ${SECONDS}
分:秒
455 7:53
463 7:43
463 7:43
478 7:58
475 7:55
平均 ---
467 7:47