- 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 を呼んだりするところはまだもうちょっとあれこれ試してみるつもり。