昨日は、ベンチマーク用ライブラリ を作ったので、RubyMotion のパフォーマンスと、Objective-C のパフォーマンスをそれぞれ計測してみました。
RubyMotion の計測に使用したものは、昨日 Github にアップロードしたフィボナッチ数列を求めるものをそのまま利用しました。
Objective-C で利用したコードは、1 つは以下のような C 言語の関数で用意しました。
1 2 3 4 5 6 |
|
2 つ目には、
1 2 3 4 5 6 7 8 9 10 |
|
とクラスを用意してメッセージを送信する形式にしました。Ruby ではメソッドはクラスやモジュールに属しメッセージ送信が行われるので、Objective-C でもクラスを用意しないとアンフェアですよね。
計測する部分のコードは、
1 2 3 4 5 6 7 |
|
と昨日作成したライブラリを活用してみました。
結果は (シミュレータ上でしか試していません)、
Result (sec) | |
Objective-C 関数 | 0.100919 |
Objective-C クラス | 0.203850 |
RubyMotion | 0.205876 |
(3回ずつ計測して最小値をピックアップしただけです)
フィボナッチ数列を求める場合では、RubyMotion は Objective-C のクラスでメッセージ送信を行うものとほぼ差が無いことがわかりました。
MacRuby では遅いと叩かれ続けている文字列処理のパフォーマンスなども計測してみるとおもしろいかもしれない。