新VM移行で実行速度が大幅に改善

「Ruby 1.9は1.8より平均5倍速い」、YARV笹田氏

2007/09/07

yarv01.jpg 東京大学大学院 情報理工学系研究科 特任助手 笹田耕一氏。笹田氏が開発したRuby VMは、次期Rubyに取り込まれることが決まっている

 2007年12月にリリースが予定されているRubyの次期バージョン、Ruby 1.9では平均して基本機能の実行が5倍程度、テスト項目によっては最大20倍程度速くなる――。9月7日、東京工業大学 大岡山キャンパスで、IPA(情報処理推進機構)が毎年行っているIPA未踏ソフトウェア創造事業2006年後期に採択された、いくつかのプロジェクトの最終成果報告会が行われた。

 報告を行ったプロジェクトの1つは「Ruby用仮想マシンYARVの完成度向上」。これまでにも何度か未踏ソフトウェア創造事業に採択され、YARVの開発を続けてきた東京大学大学院 情報理工学系研究科 特任助手の笹田耕一氏は、最新のベンチマーク結果を披露した。

 YARVでは、さまざまな高速化を行っている。例えば、広範囲に高速化の影響が及ぶ例として固定長整数の演算の最適化があるという。現行のRubyでは単純な整数演算の演算子であっても、該当するメソッドを呼び出している。YARVでは、このメソッド呼び出しを省略してダイレクトに演算することで大幅に高速化している。ユーザーが演算子を新たに定義した場合には逆に余分な処理が発生するためパフォーマンスが落ちるが「高速化はトレードオフ」(笹田氏)で、一般的なコードで効率が上がる方法を採用するというのがYARVのアプローチだという。

 YARVは、本家Rubyに取り込まれることが決定している。Rubyの生みの親であるまつもと氏が作成したRuby VMに置き換わる形で、次期バージョンのRuby 1.9から導入される。現在、笹田氏はまつもと氏と“緊密な連携”を取りながら、高速化と品質の向上を進めているという。

yarv02.jpg 青いグラフは4コアのOpteron搭載マシンのLinux上で実行した場合、赤いグラフは2コアのPentium D搭載マシンのLinux上で実行した場合。横軸は現行Rubyに対して何倍速いかを示す。フィボナッチ数列の計算では8〜10倍高速化されている。基本機能の性能向上によって、実アプリケーションの実行速度も1.5〜2倍速くなるという
yarv03.jpg 笹田氏が示した“緊密な連携”の例。まつもと氏の「うっかり」によりコンパイルできなくなった事態に対して笹田氏が突っ込みを入れている、という深夜0時過ぎのやり取り

今後のテーマは並列処理によるスケーラビリティ向上

 今後の研究テーマとして笹田氏は、並列処理への対応などスケーラビリティに取り組みたいと話す。ただ、「Rybyの言語仕様の枠組みでスケーラビリティを上げるのは難しい」ため、マルチコア、マルチプロセッサといった密度の高い並列化よりも、クラスターやグリッドのようにネットワークで接続された複数ホストによる並列化を実現していくのがいいのではないかという。

 現在、楽天とまつもと氏は共同研究として、同様のRubyによる並列化処理フレームワークの開発に取り組みつつある。それは10台のサーバに対して、Rubyを入れて処理を手軽に分散させられるフレームワークになるという。実行速度の問題から、フレームワーク自体はC言語で書かれる可能性もあるが、利用者はRubyを使って複数サーバの遊休リソースを効率的に使えるようになるという。

(@IT 西村賢)

情報をお寄せください:

Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

博報堂DYメディアパートナーズとDAC、業種特化型マーケティングソリューションの開発を開始
博報堂DYメディアパートナーズとDACは共同で、専門的な情報に特化したWebメディアと協業...

広告運用の自動化 できることとできないこと
日本の広告運用の現場にも自動化がようやく浸透し始めています。とはいえ、全てが自動化...

デジタル広告の効果測定、7割の広告主が「Cookieだけでは足りない」――サイカ調査
クッキーだけでは足りないといっても、子どものおやつへの不満ではありません。もっとず...