From: nobu.nakada@... Date: 2000-05-12T09:16:51+09:00 Subject: [ruby-list:22468] Re: IO.foreach なかだです。 At Thu, 11 May 2000 19:13:46 +0900, Minero Aoki wrote: > > |一部の処理の速度が遅くて困ってます. > > |Perl では数分で完了したものが,何故か数時間かかります. > > |その本質的な部分を抜き出すと,以下のようなものです. > > (略) > > > また、foreachのループ変数として使われているlineですが、メソッ > > ドの先頭に line = nil としておくと少々速くなります。ブロック > > 内で初出の変数はちょっと遅くなっちゃうんです。これも将来直し > > 姑息な手ならあとみっつくらい考えつきました。 もう一点、Perl 版だと @base なのに Ruby 版は Hash になってますが、こ れはそんなに大きくはないのかなぁ。 > あと、こんなの絶対だれもやらねーだろうって手ですが、ソースを > できるだけ一行につめこむようにすると、ごくわずか速くなります。 > (なぜなら行番号をふやすのにノードを一個使ってるから…) > unless h = base[key] then > base[key] = h = {} # $1 での検索は一回にする > end > h[$2] = $3.to_f (@base[key] ||= {})[$2] = $3.to_f とか。:-P -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦