yarv-dev:505
From: SASADA Koichi <ko1 atdot.net>
Date: Thu, 09 Jun 2005 14:37:14 +0900
Subject: [yarv-dev:505] Re: case/when optimization
Shiro Kawai <shiro lava.net> wrote :
[ [yarv-dev:503] Re: case/when optimization ]
at Sat, 04 Jun 2005 19:24:53 -1000 (HST)
ささだです。
(先のメールを書き終わった直後に受信したのでびびった)
> 実行時にハッシュテーブルのルックアップが1回入るんですよね?
>
> 分岐が数個の時でもif 〜 elsif 〜 else に展開するより速いのは、
> ハッシュテーブルが優秀なのかしらん。
Ruby の比較はメソッド呼び出しになるので、そのメソッド呼び
出しのコストよりもハッシュ検索コストのほうが速い、ということ
です。多分。
case X
when A, B
when C
end
#=>
tmp = X
if A === tmp || B === tmp
...
elsif C === tmp
...
end
と展開されます。この === メソッド呼び出しが、そもそも遅い、と。
> Gaucheでもcase文の分岐 (ifの連鎖に展開される) はばかにならないところ
> なので、試してみようかな。
十分長い case なら、効果はあるんじゃないかと思います。
--
// SASADA Koichi at atdot dot net
//
--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
502 2005-06-09 11:45 [ko1 atdot.net ] case/when optimization 503 2005-06-05 14:24 ┗[shiro lava.net ] -> 505 2005-06-09 14:37 ┗[ko1 atdot.net ] 506 2005-06-05 14:57 ┗[shiro lava.net ]