InfoQ

News

Ruby Benchmark Suite(Rubyベンチマークスイート)の紹介

作者 Mirko Stocker, 翻訳者 編集部 投稿日 2008年7月6日 午前12時49分

コミュニティ
Ruby
トピック
ランタイム,
パフォーマンス&スケーラビリティ
タグ
IronRuby,
MagLev,
性能評価,
Rubinius,
JRuby,
Ruby1.9

Rubyの実装数が増加しているので、テスト一式を用いた互換性の比較だけでなく(RubySpecプロジェクトについてもっと読む(参考記事))、様々な実装のベンチマーク試験も興味深い。

Antonio Cangiano氏は(リンク)Ruby Benchmark Suite(Rubyベンチマークスイート)プロジェクトを開始した。ベンチマークスイートの詳細や(リンク)、入れる予定にしているコードの種類、プロジェクトへの貢献方法をCangiano氏に聞いた。

Ruby Benchmark Suiteがどのような計画になっているのかを訊ねた。 

Ruby実装のパフォーマンス測定に使用できるベンチマークの標準セットが今のところ存在しないので、Ruby Benchmark Suiteを思いつきました。Ruby 1.9のレポジトリから取ってきたベンチマーク一式が便利だったので、前回のシュートアウトではこのベンチマークを使用しました。しかし、最終的なパフォーマンス評価をこのベンチマーク試験のみから導き出すのは明らかに不適切です。ある仮想マシンが別の仮想マシンより高速に空のループを実行するからといって、システム管理スクリプトやRailsアプリケーションを動作させた場合のこのマシン2基の比較については、実際のところ、ほとんど分からないのですから。

ですから、標準ベンチマークの目的は、実世界のRubyアプリケーションで一般に見られる様々な側面を表現するに十分なほど、多方面をカバーすることです。現在、我々は以下のカテゴリーにベンチマークを分類しています。

  • core-features (コア機能):厳密に言語機能のみを使うベンチマーク。基本的な演算以外にライブラリ・クラスをほとんど必要としない。
  • core-library (コアライブラリ):Rubyのコアライブラリ・クラスとメソッドに限定して機能させるベンチマーク。
  • standard-library  (標準ライブラリ):Rubyの標準ライブラリ・クラスとメソッドに限定して機能させるベンチマーク。
  • micro-benchmarks (マイクロ・ベンチマーク):普遍的ですが、現実のアプリケーションとなるにはまだほど遠い小型のベンチマーク。例として、The Computer Language Benchmarks Gameや伝統的なアルゴリズムからインポートしたベンチマークが挙げられます。
  • real-world (実世界):最も興味深いカテゴリーであり、実世界のプログラムから抽出された可能性もあるマクロ・ベンチマークが含まれる。たとえば、ログを処理する優れたスクリプトなどは、このカテゴリーのフォルダに入れるのにぴったりである。
これまでに受け取ったフィードバックや、代替Rubyの実装開発者(GemStone、Microsoft、Engine Yard、Sunの開発者など)が寄せた関心から、このプロジェクトは高い確率で順調に進行すると思います。

ベンチマークの整理方法について、Cangiano氏は次のように答えている。

 現在のところは、独立したベンチマークが複数あるだけですが、こうしたベンチマークを動作させて、CPU時間やメモリ使用などの測定基準を報告できるようなスクリプトを入れる予定です。次回のシュートアウトでは実行時間のみの分析となる可能性が高いのですが、長期計画では、サーバーで特に重要な側面であるメモリ消費も視野に入れています。

Tim Brayは(リンク)すでに自らのRX Ruby tokenizerを復活させて(リンク)、ベンチマークスイートに貢献している。Cangiano氏はさらに他の人々からの貢献も求めている。 

このプロジェクトはオープンソースであり、MITライセンスでリリースされているので、誰でも自由に貢献できます。現在はGitHubで(リンク)ホストされており、常連のコントリビューターならレポジトリへの書き込みアクセスも許可されるようになるでしょう。GitHubやGitにあまり詳しくない方々は、いつでも私宛に電子メールでベンチマークをお送りいただくか.com)、私たちのGoogleグループに直接お送りください(リンク)

最良のベンチマークは常にあなた自身のプログラムですから、最もありがたい貢献は、タイプ(テキスト処理、XML処理、計算など)に関係なく、実際のプログラムから抽出したものです。前述したログプロセッサは、アイデアの1つにすぎません。たとえば、実世界のフォルダにはBorasky氏の行列ベンチマークが入っていますが、その理由は、このベンチマークは本質的に、数値演算分野の現実のコードだからです(その事実がなかったら、高速のCライブラリを代わりに選ぶ人が多いでしょう)。

伝統的なアルゴリズムやその他のマイクロ・ベンチマークも歓迎はしますが、すでにそれとなく申し上げたように、私たちが必要としているのは、こうした全仮想マシンが実世界でいかに機能するかを指し示す上で、より優れたベンチマークなのです。なぜなら、実際のアプリケーションが(たとえば)平均50%しかパフォーマンス向上を示さないような場合に、「YarvはRuby 1.8.6の3倍高速」と主張しても意味がないからです。余談になりますが、標準ライブラリ・クラスとメソッドの網羅範囲を改善する必要があるので、標準ライブラリのフォルダにも愛の手を差し伸べてください。 

 ベンチマークスイートがRubyのコアライブラリと標準ライブラリに専念するのか、あるいは外部ライブラリもベンチマークするのかということも、興味深いところである。

スイートの巨大化は希望していませんが、少なくともある程度までは外部ライブラリのベンチマークを予定しています。多数のRubyプログラマーがActiveRecordやActiveSupportなどのライブラリに依存していることを念頭においておく必要があり、そして各VMがこうしたライブラリといかにうまく機能するかを確かめられるようにしたいと思っています。実のところ将来のシュートアウトでは、RailsやMerbのような人気フレームワークをテストすることさえ、悪くはないでしょう。成熟度の低いVMはこうしたフレームワークを動作できませんが、代替Rubyの実装評価に興味を持っているユーザーにしてみれば、これも重要な情報の一つになります。

前回のRubyシュートアウトが行われたのは(リンク)2007年12月なので、次回がいつごろになるかを聞いてみた。

6月24日のシュートアウト向けにテストを開始する予定で、その結果は遅くとも30日までに私のブログで発表することにしています。私は最近、自由時間の大半をWroxから出る書籍Ruby on Rails for Microsoft Developers(Microsoft開発者のためのRuby on Rails)に費やしているので、24日というのは任意の日付ではありません。第3章の締め切り翌日にあたります。Ruby 1.8.xやRuby 1.9、JRuby、Rubinius、IronRuby、MacRuby、Ruby Enterprise Edition、MagLevをMac OS X(サポートされたら)、Linux(32と64ビットの両方)、Windows Vista上でテストするなら、テストに数日要することになりますが、30日までには終了できるでしょう。

原文はこちらです:http://www.infoq.com/news/2008/06/introducing-ruby-benchmark-suite

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

クラウドコンピューティング ~ EC2、Mosso、GoGrid

クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。

仮想化入門

このArticleでは仮想化に関する利点と欠点を見ながら、仮想化の違いについて詳しく追っていきます。

Java 6のスレッド最適化は実際に動作しているのか? - パートII

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

RESTアンチパターン

本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。

モデル駆動ソフトウェア開発のためのベストプラクティス

Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Spring 2.5:Spring MVCの新機能

この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。