[#2810] [BUG] IO#eof? when Thread using — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

31 messages 1998/06/08
[#2826] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2827] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2828] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2829] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2831] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2841] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2842] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2843] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2845] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2846] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/11

けいじゅ@日本ラショナルソフトウェアです.

[#2847] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2848] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/11

けいじゅ@日本ラショナルソフトウェアです.

[#2849] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2854] experimental release 1.1b9_25 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

23 messages 1998/06/11
[#2870] Re: experimental release 1.1b9_25 — Takahiro Maebashi <maebashi@...> 1998/06/15

前橋です。

[#2911] experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

33 messages 1998/06/18
[#2912] Re: experimental release 1.1b9_26 — WATANABE Hirofumi <watanabe@...> 1998/06/18

わたなべです.

[#2913] Re: experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto) 1998/06/18

まつもと ゆきひろです

[#2916] Re: experimental release 1.1b9_26 — Takahiro Maebashi <maebashi@...> 1998/06/18

前橋です。

[#2917] Re: experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto) 1998/06/18

まつもと ゆきひろです

[#2940] experimental release 1.1b9_27 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

21 messages 1998/06/19

[#2965] feature freeze for 1.1c — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1998/06/22

[#3056] experimental release 1.1b9_28 — matz@... (Yukihiro Matsumoto)

subject says all.

28 messages 1998/06/26
[#3104] Re: experimental release 1.1b9_28 — Takahiro Maebashi <maebashi@...> 1998/06/30

前橋です。

[#3086] Re: Enumerable#reverse ([ruby-list:8579]) — gotoken@... (GOTO Kentaro)

ごとけんです

19 messages 1998/06/29
[#3120] Re: Enumerable#reverse ([ruby-list:8579]) — keiju@... (Keiju ISHITSUKA) 1998/06/30

けいじゅ@日本ラショナルソフトウェアです.

[#3130] Re: Enumerable#reverse ([ruby-list:8579]) — gotoken@... (GOTO Kentaro) 1998/06/30

ごとけんです

[#3146] [REQ] trace_func — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 1998/06/30
[#3190] Re: [REQ] trace_func — matz@... (Yukihiro Matsumoto) 1998/07/02

まつもと ゆきひろです

[#3807] Re: [REQ] trace_func — keiju@... (石塚圭樹 ) 1998/12/14

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:2973] Re: Regexp の実行が遅い気がします

From: Kazunori NISHI <kazunori@...>
Date: 1998-06-22 22:47:11 UTC
List: ruby-dev #2973
西@九大です。

From: matz@netlab.co.jp (Yukihiro Matsumoto)
> に変えてexact stringを伸ばすだけで劇的に速くなりますが….
> # 具体的にはhttpからgoo.ne.jpになってます.

おぉ、速くなりました!(0.02秒)
「.」のクォートし忘れが、ここまで影響するとは思いませんでした、失礼。

しかし、「選択(a|b|c)」を加えると、また 2秒台に戻ってしまいます。
----------------------------------------------------------------------
  if /(\S+).*\[([^\]]+)\][^"]*"([^"]*)".*http:\/\/(infoseek\.com|goo\.ne\.jp|infoseek\.co\.jp)\/\S*\??(\S*)/
----------------------------------------------------------------------
#'goo\.ne\.jp' を '(infoseek\.com|goo\.ne\.jp|infoseek\.co\.jp)' へ

試しに、先頭に「^」をつけてみると、0.04秒になりました。
それは、また別モノという話もありますが。


「(a|b|c)」が遅い?と邪推して、マッチングを複数回に分けてみる(↓)と、
0.02秒 と、速くなったりします。
----------------------------------------------------------------------
RegexHead = '(\S+).*\[([^\]]+)\][^"]*"([^"]*)".*http://'
RegexTail = '/\S*\??(\S*)'

RobotHostsHash = {
  'goo.ne.jp' => ['mt', 'aw'],
  'infoseek.co.jp' => 'qt',
  'infoseek.com' => 'qt',
}
  
CompiledRegexArray = RobotHostsHash .keys .collect { |host|
  Regexp .compile( RegexHead + host .gsub('\.', '\.') + RegexTail )
}

while access_log = gets
  CompiledRegexArray .each do |regex|
    if access_log =~ regex
      break
    end      
  end
end
----------------------------------------------------------------------

「パターンが複雑になっても、マッチング回数が少ない方が速い」という先入
観があったのですが、こういうものなんでしょうか?

とは言え、この事例に関して言えば、$1, $2,... の参照で楽をしようとした
のがどうも失敗のようで、単に
----------------------------------------------------------------------
  if /http:\/\/(infoseek\.com|goo\.ne\.jp|infoseek\.co\.jp)/
----------------------------------------------------------------------
でまず抜き出し、$`, $' から、さらに抽出すべきでした。これだと、0.02秒。


> などの悪条件が重なっているようです.しかし,それでも遅すぎる
> ので,なんとかしたいのですが,すぐには対策が思い付きません.

ruby-4.0 くらいまでには、お願いします。


> |「Regexp 関係にバグがある」事を期待しつつ、とりあえず御報告まで。
> 
> とくにこれというバグではなく,ちょっとずつまずい点が重なって
> の現象のようです.いやな感じ.^^;;;

そうですね、これだと「バグの存在」を期待してる厭味な人みたいですね。
失礼しました。「Regexp 関係のバグの露呈」を期待しつつ、C-cC-c

------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程二年
      西 和則   ( e-mail: kazunori@swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------

In This Thread