2011-10-31
Rubinius の ruby 1.9 モード
Rubinius をインストールしてみたけど 1.9 に対応してなくてガッカリ、と思ってしまった人向け。ちゃんと 1.9.2 モードもあるよ!まだまだこれからだけど!
詳細は Inside the Rubinius 2.0 Preview Release - Rubinius を読んでくださいね。
Rubinius を使ってるような rubyist の中でも更に尖ってる人たちは知っているだろうけど、 Rubinius のオプションには ruby 1.8.7 モードと 1.9.2 モードを切り替えるスイッチがある。
僕の予想では、大抵の人は RVM あたりのバージョンマネージャを使っていると思うので、コンパイルタイムオプションについては書かない。
んで、実行モードを指定するには、起動時に -X19 または -X18 を渡してあげる。こんな感じ。*1
% rbx -v rubinius 2.0.0dev (1.8.7 c116f06c yyyy-mm-dd JI) [x86_64-unknown-linux-gnu] % rbx -X19 -v rubinius 2.0.0dev (1.9.2 c116f06c yyyy-mm-dd JI) [x86_64-unknown-linux-gnu]
現時点の Rubinius がどの程度 1.9 系をサポートできているのかよく分かってません。すいません。
ああ、それから「俺は 1.9 モードでしか使いたくないんだ」って向きは環境変数 RBXOPT=-X19 を設定すると良いらしいです。
こんな感じのベンチマークも取ってみた*2んだけど、 あんまり変わらないね。-X18 も -X19 も同じようなバイトコードを吐くってことかな。
def fib(n) if n <= 1 return 1 else return fib(n-1) + fib(n-2) end end require 'benchmark' n = ($n || 34).to_i Benchmark.bm(10) do |x| x.report(RUBY_VERSION) { fib(n) } end
user system total real
1.8.7 3.422480 0.000000 3.422480 ( 3.443763)
1.8.7 3.252506 0.001000 3.253506 ( 3.291893)
1.8.7 3.357489 0.000000 3.357489 ( 3.405878)
1.8.7 3.286501 0.000000 3.286501 ( 3.331286)
1.8.7 3.279502 0.000000 3.279502 ( 3.326297)
user system total real
1.9.2 3.280501 0.002000 3.282501 ( 3.302130)
1.9.2 3.183516 0.000000 3.183516 ( 3.198741)
1.9.2 3.363489 0.000999 3.364488 ( 3.379368)
1.9.2 3.403482 0.001000 3.404482 ( 3.419116)
1.9.2 3.271502 0.000000 3.271502 ( 3.292675)
参考
コメント