vine-users ML アーカイブ



[vine-users:056329] Re: grep 2.5 の動作が遅い

  • From: Yamamoto Atsushi <yamamoto@xxxxxxxxxxxxxxxxxxxxx>
  • Subject: [vine-users:056329] Re: grep 2.5 の動作が遅い
  • Date: Fri, 29 Nov 2002 08:24:18 +0900 (JST)
山本@東大駒場です.

>   現在、Vine2.6r1をインストールし、apt-getで最新にしています。
> しかしながら、Vine2.5では問題のなかった grepを利用したshell
> scriptの動作が遅くなってしまいました。
(snip)
> これはgrep 2.5のバグなのでしょうか?いろいろ検索してみましたが、
> 見つけることができなかったので、このMLに投稿させて頂きました。
> 情報をお持ちの方はお教え頂ければ幸いです。

^M で始まるのは分かりませんが,普通のパターンマッチでは,grep 2.5のマ
ルチバイト対応が影響して遅くなっているようです.
とりあえず,回避するためには環境変数 LANG を C にしておくようです.

私は,エイリアスで env LANG=C を前においてから [ef]?grep するようにし
ています.wc も同じく速くなったように思います.(cshの場合)

alias grep 'env LANG=C grep'
alias fgrep 'env LANG=C fgrep'
以下同様.

uuencodeしたものなら,マルチバイト対応をオフにした方がよいので,とりあ
えず試してみてはどうでしょうか?

以下,数週間前に実験したものです.

% wc /var/log/httpd/access_log
 133102 2344085 29184468 /var/log/httpd/access_log
% grep -c 'Opera' /var/log/httpd/access_log
   3470   63668  752625
% time grep 'Opera' /var/log/httpd/access_log
.....
24.470u 0.390s 0:37.36 66.5%    0+0k 0+0io 167pf+0w
% time env LANG=C grep 'Opera' /var/log/httpd/access_log
.....
0.130u 0.200s 0:02.98 11.0%     0+0k 0+0io 259pf+0w

13万行のApacheのログに対して3500行ほどマッチする場合に,LANG が
ja_JP.eucJP であると25秒かかり,C であると0.13秒で終っています.

 山本 篤 <東京大学総合文化研究科広域科学専攻>
 mailto:yamamoto@xxxxxxxxxxxxxxxxxxxxx
 http://www.graco.c.u-tokyo.ac.jp/~yamamoto/