From: Motohiro KOSAKI Date: 2012-02-08T03:29:59+09:00 Subject: [ruby-dev:45210] [ruby-trunk - Feature #1211][Rejected] nested loop construct Issue #1211 has been updated by Motohiro KOSAKI. Status changed from Assigned to Rejected 三年前の高速化ネタを蒸し返すのも不毛なのでCloseしますね。たぶん今計り直すと全然違う結果が得られる気がするので新チケットで最初から議論しなおしたほうがマシでしょう ---------------------------------------- Feature #1211: nested loop construct https://bugs.ruby-lang.org/issues/1211 Author: Yukihiro Matsumoto Status: Rejected Priority: Low Assignee: Yukihiro Matsumoto Category: core Target version: 2.0.0 =begin まつもと ゆきひろです 最近、AO Benchを見ています。http://lucille.atso-net.jp/aobench/ 実行時間の1/3はGCが消費していて涙目。 それはそれとして、AO Benchの中には nphi.times do |j| ntheta.times do |i| のような多重ループがあります。これを nloop(nphi, ntheta) do |j,i| というように書けたら、よりわかりやすく、かつ、やや高速なので はないかと考えました。実際に実装したところ、AO Benchでは5%程 度実行時間が短縮されるようです。 検討事項は * そもそも必要なのか。YARVではややブロック呼び出しが重い傾 向があるので効果があったが、よりブロック呼び出しが軽量に なれば不要ではないか * 名前。今回はnested loopということでnloopという名前で実装 したが、もっと適切な名前があるかもしれない。妙な短縮形よ りも長くても記述的な名前を好む人も多いかも。Ruby(というか 私)は前者を好む傾向はあるけど * 他の案としてはloopが引数を取るようにして、nloop相当にす るというものがある。しかし、1.9のloopメソッドが持つ StopIteration例外でループ終了というセマンティックスと多 重ループがうまくつながらなかったので、今回はやめておいた などが考えられます。どう思いますか? まつもと ゆきひろ /:|) =end -- http://bugs.ruby-lang.org/