CRuby - 日本OSS推進フォーラム

EnterpriseにおけるRuby適用実践
~Webアプリケーションにおける各Ruby処理系の性能評価~
2015年1月
日本OSS推進フォーラム アプリケーション部会
(株)日立ソリューションズ 技術開発本部 Rubyセンタ
三好 秀徳
Copyright 2015 Japan OSS Promotion Forum
1.Rubyとは
A PROGRAMMER'S BEST FRIEND

まつもとゆきひろ氏によって開発
が行われているプログラミング
言語

シンプルかつエレガントな文法を
持ち、高い生産性を誇る

Webフレームワーク Ruby on
Railsによって認知が広まる
Copyright 2015 Japan OSS Promotion Forum
1
2.各Ruby処理系
数多くあるRuby処理系
Ruby処理系
特徴
CRuby
Ruby処理系のデファクト・スタンダード
C言語で実装されている
同時に1スレッドしか動かない
JRuby
Java言語で実装されている
同時に複数スレッドを実行可能
Rubinius
Ruby言語で実装されている
同時に複数スレッドを実行可能
IronRuby
.NET Framework上で動作するRuby
MacRuby
Objective-Cで実装し、OS X上で動作するRuby
性能面(メモリ・処理時間)でどのRuby処理系を使うと良いのか?
Copyright 2015 Japan OSS Promotion Forum
2
3.CRubyとJRubyの紹介
CRuby

C言語で実装されたRuby処理系

Ruby処理系のデファクト・スタンダード

同時に1スレッドしか実行できない
JRuby

Java言語で実装されたRuby処理系

多くのRubyライブラリ以外にJavaライブラリも動作する

同時に複数スレッドを実行可能
Copyright 2015 Japan OSS Promotion Forum
3
4. ベンチマークソフトの結果紹介(メモリ)
CRubyに比べJRubyは2.5倍~40倍以上メモリを消費する
Copyright 2015 Japan OSS Promotion Forum
4
5.ベンチマークソフトの結果紹介(処理速度)
CRubyが早いケース
CRubyに比べ、このプログラムでは
JRubyは約50倍以上遅い
Copyright 2015 Japan OSS Promotion Forum
5
6.ベンチマークソフトの結果紹介(処理速度)
JRubyが早いケース
CRubyに比べこのプログラムでは
JRubyは約10倍速い
Copyright 2015 Japan OSS Promotion Forum
6
7. ベンチマークソフトの結果まとめ
ベンチマークソフトの実行結果

メモリは、JRubyで動かすと大量に消費する

処理速度は、プログラム依存

JRubyで動かすと大幅に早くなるものも一部存在
Webアプリケーションではどのような結果が出るのか?

メモリは、JRubyで動かすと大量に消費するのでは?

処理速度は、JRubyで動かすと大幅に早くなるか大幅
に遅くなるかのどちらか?
Copyright 2015 Japan OSS Promotion Forum
7
8. 作成したWebアプリケーションの紹介
参照系Webアプリケーション

リクエストごとにランダムにレコードを参照

表示するレコード件数は一定(1,000件)
id : 1,5,30,124, ...
1,000 records
10 リクエスト/秒
50,000 リクエスト
id : 3,13,48,132, ...
1,000 records
Copyright 2015 Japan OSS Promotion Forum
8
9.測定結果(メモリ使用量)
メモリ使用量に大きな差は発生せず
Copyright 2015 Japan OSS Promotion Forum
9
10.測定結果(Webアプリ処理時間・起動直後)
起動直後はJRubyが圧倒的に遅い
Copyright 2015 Japan OSS Promotion Forum
10
11.測定結果(Webアプリ処理時間)
時間が経過するとJRubyが早くなるケースが増える
Copyright 2015 Japan OSS Promotion Forum
11
12.まとめ
メモリ使用量

Webアプリケーションにおいて、JRubyはCRubyより多くメモリ
を使用するが、差は僅か
Webアプリケーション内部の処理時間

起動直後、JRubyは処理時間が非常にかかる

JRubyは処理時間がかかる時とかからない時の差が激しい

ガーベージコレクションの影響
リクエストを流し続けると、JRubyはCRubyより早いケースが
増えてくる

Copyright 2015 Japan OSS Promotion Forum
12
13.今後の課題
パラメータチューニングの実施

JVMパラメータのチューニング

ガーベージコレクションの回数を削減
テストパターンの増加

更新系(登録・更新・削除)の処理を追加

バッチ系アプリケーションでの施行
Copyright 2015 Japan OSS Promotion Forum
13
Javaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
.NET Framework は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
Objective-CとOS Xは、米国Apple Inc.の米国およびその他の国における商標または登録商標です。
その他、記載の商品名、会社名は、それぞれの会社の登録商標または商標です。
Copyright 2015 Japan OSS Promotion Forum
14
補足.測定結果(Webアプリ処理時間)
JRubyは処理時間がとる範囲が広い
CRubyと比べると処理時間
がとる範囲が大きすぎる
のブレ幅が大きすぎる
Copyright 2015 Japan OSS Promotion Forum
15