JRuby 50倍速、MacRubyはすでに到達域 - 竹内関数

    後藤大地  [2009/04/07]

    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

    How JRuby Makes Ruby Fastベンチマークデータグラフ

    前評判どおり、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

    How JRuby Makes Ruby Fastベンチマークデータグラフ その2

    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実装系の実行速度競争がしばらく続くことになりそうだ。

    関連記事

    JavaアプリをAndroidに移植する方法 - JRubyの場合は1時間 [2009/3/3]
    JRuby、Androidで動作? [2009/2/25]
    スレッドセーフRuby on Railsが意味することは、Rails 2.2でスレッドセーフ [2008/8/18]
    JRuby 1.1系最新版登場 - 82問題修正、インタプリンタ性能大幅向上 [2008/7/24]
    起動大幅改善JRuby 1.1.2、YAMLシンボル処理は100倍以上 [2008/5/29]
    JRuby 1.1登場、このパフォーマンス注目 [2008/4/8]
    JRuby、Google SoC 2008で開発加速か [2008/2/29]
    JRuby 1.1 RC版登場 - 鬼車取り込みと143の問題修正 [2008/1/9]
    JRuby、鬼車を取り込む [2007/11/30]
    Ruby製JRubyコンパイラ誕生へ - 前段階のJVMバイトコードビルダは完成 [2007/11/21]
    開発版JRuby 1.1、Rubyと同程度の性能をRailsで達成か [2007/10/30]
    JRuby 1.1は試金石 - より完璧なプロダクトを目指して、バグ報告受付中 [2007/10/24]
    JRuby、Ruby 1.8に完全に対応したRuby-Javaコンパイラを開発 [2007/10/1]
    JRuby 1.0.1登場 - 30の互換性問題を修正、1.0ユーザはアップグレードを [2007/8/28]
    JRuby 1.1のロードマップ公開 - Javaバイトコードへのコンパイラなどを提供 [2007/8/24]
    JRuby、Java 5への移行を決定 - 1.x系はJava 1.4.2を引き続きサポート [2007/8/10]
    JRubyでも議論、Java 1.4.2からJava 5への移行問題 [2007/7/30]
    JRuby 1.0、待望のリリース! - Rubyとの互換性が目標レベルを達成 [2007/6/11]
    "JRuby 0.9.8"登場 - 聞こえてくる1.0の足音 [2007/3/7]
    JRuby 0.9.2登場 - opensslエクステンションを追加、Railsサポートも改善 [2006/12/12]
    JRuby 0.9.1登場 - 6割スピードアップしRailsサポートも改善 [2006/10/21]
    話題のJRubyを動かしてみよう 導入編 - JRubyのコツをつかむ [2006/9/11]
    話題のJRubyを動かしてみよう TIPS編 - 書いてみよう自分のコード [2006/9/12]
    SunもRubyに注力 - JRubyコアデベロッパ2名をフルタイム雇用 [2006/9/11]
    "JRuby" 0.9.0正式リリース - 次期バージョンではどうなる? [2006/7/6]
    RailsやWebBrickも動作、Ruby-Javaの相互接続"JRuby" 0.9.0RC1 [2006/7/5]

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン