From: Wakou Aoyama Date: 2000-05-09T07:56:49+09:00 Subject: [ruby-list:22399] Re: cgi.rb is too slow 青山です。 On Mon, 8 May 2000 13:26:44 +0900, WATANABE Hirofumi wrote: > でも CGI.new("html3") したらやっぱり遅くなるわけですよね? > #それを気にする人は使っちゃいけない? > > あれからちょっと考えたんだけど, method をいっぱい作るんじゃ > なくて method_missing ならそんなに遅くならない気も. method_missing もうかんだのですが、やはり数が多いので、あまり変わらな いような気もして試してはいません。また、先の変更で CGI.new("html3") 等 も改善され、次のような程度にはなりましたから、まあ、とりあえずは良いか なという気も。 $ time ruby -rcgi-lib -e0 real 0m0.091s user 0m0.070s sys 0m0.020s $ time ruby -rcgi -e0 real 0m0.244s user 0m0.220s sys 0m0.020s この差は依然としてありますが、CGI.new すると、 $ time ruby -rcgi-lib -e'CGI.new' a=b real 0m0.212s user 0m0.190s sys 0m0.020s $ time ruby -rcgi -e'CGI.new' a=b real 0m0.253s user 0m0.230s sys 0m0.030s ほぼ同じです。そして HTML 生成関連ですが、 $ time ruby -rcgi -e'CGI.new("html3")' a=b real 0m0.325s user 0m0.300s sys 0m0.020s $ time ruby -rcgi -e'CGI.new("html4Fr")' a=b real 0m0.372s user 0m0.340s sys 0m0.030s 確かにちょっとかかります。しかし、 $ time perl -e'use CGI qw(:standard :html3); new CGI' a=b real 0m0.386s user 0m0.360s sys 0m0.030s という事で、一応許せる程度にはなっているかな、と。 ----- 1.31 では HTML 生成系のメソッドについては文字列連結後にまとめて eval にしました。わずかに早かったので。一方、Query 系は個々に eval の方が早 かったので、やはりなかなか微妙ですね。 あとは、require "English" を alias $DEFAULT_OUTPUT $> に変更すると、ファ イルアクセスが1回減るので、これもちょっと早くなります。ただ、これに関 しては require "English" という1行の記述が見える方が重要という感じも しますので、そのままにしてあります。 -- 青山 和光 Wakou Aoyama