[#35688] サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ? — Onodera Takafumi <onodera-tak@...>
9 messages
2002/08/01
[#35689] Re: サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ?
— "Shin'ya Adzumi" <adzumi@...>
2002/08/01
あづみです。
[#35690] Ruby/SDL がうまく動きません — Mitsuhiko_Tomomi <mikkun_ota@...>
earthseaと申します。
4 messages
2002/08/01
[#35722] パターンマッチした値を保持する変数は — goto@...
後藤です。
8 messages
2002/08/08
[#35729] SMTP サーバクラス — とみたまさひろ <tommy@...>
とみたです。
5 messages
2002/08/08
[#35743] FortranArray, yet another handler of array — NISHIMATSU Takeshi <t-nissie@...>
西松と申します.
4 messages
2002/08/12
[#35745] Ruby vs. Expect — T_A_K_E <koichi.takehara@...>
たけはらと申します。
5 messages
2002/08/12
[#35754] [ANN] SWIG 1.3.14 リリース — Shibukawa Yoshiki <yoshiki@...>
渋川@SWIGコアメンバーです。
4 messages
2002/08/13
[#35759] Bignum fast multiplication — IKEGAMI Daisuke <daisu-ik@...>
いけがみです。
9 messages
2002/08/14
[#35772] Unsecure world writeable dirの警告 — "井上 浩一" <kyoui32@...>
井上です。
31 messages
2002/08/26
[#35774] Re: Unsecure world writeable dir の警告
— matz@... (Yukihiro Matsumoto)
2002/08/26
まつもと ゆきひろです
[#35775] Re: Unsecure world writeabledir の警告
— nobu.nakada@...
2002/08/26
なかだです。
[#35776] Re: Unsecure world writeabledir の警告
— matz@... (Yukihiro Matsumoto)
2002/08/26
まつもと ゆきひろです
[#35778] Re: Unsecure world writeabledir の警告
— nobu.nakada@...
2002/08/26
なかだです。
[#35779] Re: Unsecure world writeabledir の警告
— WATANABE Hirofumi <eban@...>
2002/08/26
わたなべです。
[#35780] Re: Unsecure world writeabledir の警告
— nobu.nakada@...
2002/08/26
なかだです。
[#35784] Re: Unsecure world writeabledir の警告
— "U.Nakamura" <usa@...>
2002/08/26
こんにちは、なかむら(う)です。
[#35854] Re: Unsecure world writeabledir の警告
— "Inoue" <rubyist@...1.117.ne.jp>
2002/09/04
井上です。
[#35865] Re: Unsecure world writeabledir の警告
— Koji Arai <JCA02266@...>
2002/09/05
新井です。
[#35866] Re: Unsecure world writeabledir の警告
— matz@... (Yukihiro Matsumoto)
2002/09/06
まつもと ゆきひろです
[#35867] Re: Unsecure world writeabledir の警告
— "NAKAMURA, Hiroshi" <nakahiro@...>
2002/09/06
なひです。
[#35870] Re: Unsecure world writeabledir の警告
— Koji Arai <JCA02266@...>
2002/09/06
新井です。
[#35789] multipart な CGI を速くしたい — Takashi Kanai <kanai@...4u.or.jp>
Windows上でRubyとMySQLを使ってショッピングサイトのようなものを作って
17 messages
2002/08/28
[#35790] Re: multipart な CGI を速くしたい
— "U.Nakamura" <usa@...>
2002/08/28
こんにちは、なかむら(う)です。
[ruby-list:35812] Re: multipart な CGI を速くしたい
From:
Takashi Kanai <kanai@...4u.or.jp>
Date:
2002-08-29 04:01:05 UTC
List:
ruby-list #35812
こんにちは、金井です。
MoonWolf <moonwolf@moonwolf.com> wrote:
> C言語版にこだわらなければ、PureRuby版のStringIOでもいいと思います。
ありがとうございます。さっそく試してみました。
FORM中には次の<INPUT>があります。合計 210個です。
HIDDEN:2 SUBMIT:2 TEXT:41 CHECKBOX:134 SELECT:29 FILE:2
2つのFILEは 6番目,210番目(すなわち最後)にあります。
FILE以外には若干の入力があり、CONTENT_LENGTH は 20942 です。
FILEとしては約54.5KBのJPGを使いました。
表の中の時間の単位は ms です。
計測のたびにread_multipart時間にして200ms程度のばらつきがありました。
read_multipart Tempfile.new StrionIO.new
StringIO FILE1 FILE2 時間 時間/回数 時間/回数
-------------------------------------------------------------------
1-1 × × × 7531 7046/210 0/ 0
1-2 × ○ × 7515 7062/210 0/ 0
1-3 × × ○ 7547 6938/210 0/ 0
-------------------------------------------------------------------
2-1 ○ × × 2860 2438/103 141/107
2-2 ○ ○ × 1703 1249/ 56 78/154
2-3 ○ × ○ 7391 6964/210 0/ 0
-------------------------------------------------------------------
3-1 ○ × × 360 0/ 0 32/210
3-2 ○ ○ × 610 141/ 6 62/204
3-3 ○ × ○ 7469 7001/210 0/ 0
-------------------------------------------------------------------
2-1を例に読み方を説明します。
stringio.rbが存在する。
2つの<INPUT type="file">のうちの最初のものにだけファイルを指定。
read_multipart関数の所要時間が2860ms。
その中でTempfile.newが103回あり、その合計所要時間が2438ms。
StringIO.newが107回あり、その合計所用時間が141ms。
さて、
表の最初の3行は StringIO 無しの場合です。
FILEが 両方空白/最初のだけ指定/最後のだけ指定 した場合の3通りです。
read_multipartの所要時間のほとんどが 210回の Tempfile.new に費や
されているのが分かります。平均するとだいたい 33ms くらいでしょうか。
次の3行は StringIO 有りの場合です。劇的に速くなっています。
ただ2-3から分かるように、最後の最後にFILEがある場合はStringIOの
御利益が無くなってしまいます。
最後の3行は、Tempfileを使うかStringIOを使うかの判定をしている
if 10240 < content_length
という行を、試しに
if 10240*3 < content_length
に変えてみた場合です。
3-1を見れば分かりますが、CONTENT_LENGTHは20942ですので、Tempfile.new
は結局1回も実行されません。
以上のように、FILEをFORMの後ろの方に置きさえしなければStringIOの効果は
絶大です。この制約もread_multipart関数に手を入れれば解消できるような
気がしますが、今の私の手には余りますので cgi.rb はそのままで stringio
を入れるだけで運用しようと思います。
どうもありがとうございました。
MoonWolf <moonwolf@moonwolf.com> wrote:
> この程度のFORMで遅くなるのはcgi.rbにも原因があります。
> read_multipart中の以下の部分は無駄が多いです。
>
> > begin
> > require "stringio" if not defined? StringIO
> > body = StringIO.new
> > rescue LoadError
> > require "tempfile"
> > body = Tempfile.new("CGI")
> > end
> メソッド実行時ではなく、ライブラリロード時に解決すべき問題です。
律速段階は Tempfile.new であることが分かりましたので、処理時間に関し
ては、あまり効果がないのではないかと思います。
--
金井 隆 (KANAI Takashi)
kanai@nn.iij4u.or.jp