IronRuby Pre Alpha 1 リリースされたので軽く速度感を確認してみた

A first look at IronRuby
http://www.iunknown.com/2007/07/a-first-look-at.html

楽しみにしていた IronRuby が(一応)出た。
ビルドして軽く動かそうとしてみたが、既存のスクリプトがことごとく動かない……
とりあえず簡単に試した範囲で、正規表現がどうも使えず( r=/abc/ は出来るが、 "abc"=~/abc/ とかができない)、map や inject は動かず、文字列の大小比較は出来ず、Hash や Time や Date や Process が実装されてないっぽい。
まあ、正規表現と Hash が動かない時点で普通の ruby スクリプトは全滅か。
「Alpha の Pre の 1 なんだから別にいいでしょ!」という声が聞こえるような気がしないでもない。


というわけでちょっと参考にするのも気が引けるが、今後どの程度の速度を期待していいのかを推し量るために、とても簡単ながらベンチをとってみた。
題材は当たり障りのないところでフィボナッチ数列
対戦相手は ActiveScriptRuby(誰でも検証しやすいでしょう)。
せっかくだから JRuby にも参戦願う。

def fib(n)
 if n > 1
   fib(n - 2) + fib(n - 1)
 else
   n
 end
end
puts fib(36)

なんのひねりもない普通のフィボナッチ数列のコード。これを CRuby/JRuby/IronRuby で実行してみる。
IronRuby が日時まわりをサポートしてないので cygwin の time で計測。まあ、参考値の雰囲気くらいの感じで。
計算結果出力は省略。

$ time ruby fib.rb
real    0m34.358s
user    0m0.015s
sys     0m0.015s

$ time jruby fib.rb
real    0m19.237s
user    0m0.015s
sys     0m0.031s

$ time rbx fib.rb
real    0m7.020s
user    0m0.015s
sys     0m0.015s

おっとーーー参考値にしてもえらい大差が。
なんどか動かしてみたが、計測誤差のレベルでしか違いはなかった。


IronRuby はまだまだ実装されていないものが多いため軽いのかなんなのか推測の域にすら達していないが、まあ引き続き期待、と言ってみる分には全然大丈夫そうだ。
WPF を呼んだりするところはまだもうちょっとあれこれ試してみるつもり。