![]() |
JRuby - Java powered Ruby implementation |
JRubyの開発者であるCharles Nutter氏が自身のブログにおいてHow JRuby Makes Ruby Fastのタイトルのもと、JRubyのパフォーマンス計測結果を報告している。Charles Nutter氏は竹内関数の一種であるTak関数を使ったベンチマークを例に取り上げ、インタプリタモードから最適化が実施されたコンパイルモードの動作までをまとめている。紹介されているデータをまとめると次のとおり。
| 実行環境 | 実行時間[s] |
|---|---|
| Ruby 1.8.6p114 | 18.22 |
| Ruby 1.9.1p0 | 3.61 |
| JRuby 1.3.0-dev, interpreted, client VM | 26.81 |
| JRuby 1.3.0-dev, interpreted, server VM | 8.00 |
| JRuby 1.3.0-dev, compiled (unoptimized), server VM | 4.00 |
| JRuby 1.3.0-dev, compiled (heap scope optz), server VM | 3.00 |
| JRuby 1.3.0-dev, compiled (heap scope + bracktrace frame optz), server VM | 2.79 |
| JRuby 1.3.0-dev, compiled (heap scope + heap frame optz), server VM | 2.05 |
| JRuby 1.3.0-dev, compiled (heap scope, heap frame, fastops optz), server VM | 1.52 |
| JRuby 1.3.0-dev, compiled (heap scope, heap frame, fastops, threadless, positionless optz), server VM | 1.48 |
| JRuby 1.3.0-dev, compiled ("--fast", dyncall optz), server VM | 1.42 |
| JRuby 1.3.0-dev, compiled ("--fast", dyncall optz, recursion optz), server VM | 0.36 |
前評判どおり、Ruby 1.8系と1.9系では実行速度が高速化されていることがわかる。Charles Nutter氏が実施した今回のケースではRuby 1.9.1の方が5倍ほど高速に動作している。JRubyはインタプリタモードで動作しているときはRuby 1.8.6と比較して速度が7割ほどしかでていない。しかしインタプリタモードでもJava仮想マシンをサーバVMで動作させるとRuby 1.8.6よりも2.3倍ほど高速に、Ruby 1.9.1と比べると0.45倍ほどまで迫っている。
サーバVMのままさらにインタプリタからコンパイルモードに変えると、ほとんどRuby 1.9.1と変わらない実行速度を実現しており、さらに各種最適化を実施することで実行速度は向上し、How JRuby Makes Ruby Fastで紹介している限りでは最終的にRuby 1.8.6よりも50倍、Ruby 1.9.1よりも10倍高速な実行速度が計測されている。
| 実行環境 | Ruby 1.8.6p114比較 (実行速度倍率) |
|---|---|
| Ruby 1.8.6p114 | 1 |
| Ruby 1.9.1p0 | 5.01 |
| JRuby 1.3.0開発版, インタプリタ, クライアントVM | 0.68 |
| JRuby 1.3.0開発版, 最新最適化済みコンパイル, サーバVM | 50.61 |
Ruby 1.8.6よりも50倍高速なバージョンはいくつかのケースで動かないことが確認されているため、JRuby 1.3には取り込まれないとみられる。ひとつ前のRuby 1.8.6よりも12.8倍高速、Ruby 1.9.1よりも2.54倍高速のあたりまでの実装が取り込まれるとみられる。
Charles Nutter氏はHow JRuby Makes Ruby FastでDuby氏が実施した「:fixnum」というキーワードを指定して動作するようにしたケースも取り上げ、1,000回実施といったように回数を引き上げているにも関わらず平均の実行速度が0.013秒になるという桁違いの高速化を実現していることにも触れ、:fixnumを加えるといったように言語仕様を変更しているためRubyの実行とはいえないが、JRubyにもまだまだ高速化の余地があるだろうと結んでいる。
なお寄せられているコメントにはRuby 1.9.2devとMacRuby version 0.5で実験したとみられる結果も掲載されており、Charles Nutter氏が示したもっとも高速なベンチマーク結果に匹敵する速度が実現されていることがわかる。Tak関数で計測できるベンチマークは性能の1側面でしかないが、ひとつの指針であることには間違いない。MacRubyは次のリリースでさらにパフォーマンスを向上させるとみられており、Ruby実装系の実行速度競争がしばらく続くことになりそうだ。
| エンタープライズ向けCMS「eZ Publish 4.7」が公開 [07:30 5/28] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
|
【コラム】マネーのトリビア 第21回 決算ニュースに出てくる、粗利益、営業利益、経常利益、最終利益、どう違う? [08:00 5/28] ライフ |
|
【連載】発音も聞けちゃう、知って得するidiom情報 第15回 hit the books [08:00 5/28] ライフ |
|
マイナビクリエイター、スマートフォンゲームアプリ開発セミナーを6/23開催 [08:00 5/28] クリエイティブ |
|
エンタープライズ向けCMS「eZ Publish 4.7」が公開 [07:30 5/28] エンタープライズ |
|
[武井咲]「無戸籍」の難役で2クール連続のドラマ主演 江口洋介との“許されざる”恋愛描く [07:00 5/28] エンタメ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。