From: matz@... (Yukihiro Matsumoto) Date: 1998-06-22T15:27:57+09:00 Subject: [ruby-dev:2962] Re: Regexp の実行が遅い気がします まつもと ゆきひろです In message "[ruby-dev:2961] Regexp の実行が遅い気がします" on 98/06/22, Kazunori NISHI writes: |西@九大です。 | |Web のアクセスログを調査しようとしたんですが、どうも Regexp の実行が |遅い気がします。下は、単にチェックしてるだけなんですが、 これは遅いですねえ.私のマシンだと1回のマッチに2秒かかります. * 先頭が\Sなどというパターンのためfastmapによる絞り込みが 効かない * パターンのexact stringが短くmust_matchが効きすぎる * 対象の文字列が長い などの悪条件が重なっているようです.しかし,それでも遅すぎる ので,なんとかしたいのですが,すぐには対策が思い付きません. とりあえずの対策としては |【プログラム】 |---------------------------------------------------------------------- |while gets | if /(\S+).*\[([^\]]+)\][^"]*"([^"]*)".*http:\/\/.*goo.ne.jp\/\S*\??(\S*)/ | end |end |---------------------------------------------------------------------- のパターンを | if /(\S+).*\[([^\]]+)\][^"]*"([^"]*)".*http:\/\/.*goo\.ne\.jp\/\S*\??(\S*)/ に変えてexact stringを伸ばすだけで劇的に速くなりますが…. # 具体的にはhttpからgoo.ne.jpになってます. |「Regexp 関係にバグがある」事を期待しつつ、とりあえず御報告まで。 とくにこれというバグではなく,ちょっとずつまずい点が重なって の現象のようです.いやな感じ.^^;;; まつもと ゆきひろ /:|)