BT

Rubyパフォーマンスの総まとめ:GC Tuning、MagLev、MacRuby

| 作者: Werner Schuster フォローする 6 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2009年4月27日. 推定読書時間: 2 分 |

原文(投稿日:2009/4/16)へのリンク

Ruby 1.8のGarbage Collectorは、過去多くの注目を集めた。Ruby Enterprise Edition (REE)のデベロッパは、GCに不正侵入し、プロセッサ全体でメモリを共有した(作成者とのInfoQのインタビュー(参考記事)に詳細掲載)。REEは、 Railsアプリケーションのデプロイおよび実行するための有名な方法となった。37Signalsやその他大勢がそれを使用している。近ごろ、REEの GCは改善された。散発的なフリーズを除去したバグ修正(参考記事)がある。スタンダードRuby 1.8.xのユーザは、多くのGC問題や関連したメモリリークを修正するMBARIパッチ(参考記事)からの改善をまもなく取得する。またEngineYardにより後援される。

Evan Weaver氏はGCチューニングチップ(リンク)を提供し、GCのモニターを許可するパッチを推奨している。提示されたチューニングの結果は、以下のとおりである。

GCは、13の要求ごとのみで実行する。わずかにコストが高く、0.009秒のリクエストごとのコストである。全体的には34%のスピードアップである。 GC呼び出しの周波数は、RUBY_GC_MALLOC_LIMITの変化と直接対応するが、それを増加すると、メモリ使用率は相当膨れ上がる。

よりパフォーマンスを取得するための別の方法は、現代のJVMのGCの成熟度から利を得るJRubyなど他のRuby実装を検討することである。他の実装は、最先端の改善を目指している。Rubiniusは着実に改善しており、近ごろMacRubyはパフォーマンスの改善を示したその実験的なブランチ(リンク)でニュースになった。実験的なブランチの作業は、進行している。

- コンパイラ(AFAIK)は、すべての言語スペックをコンパイルすることができるので、大体完成したのではないかと思う。
- 上記のおかげで、IRBは実行している。

さらなる改善(リンク)

- Tail-call除去が導入された。スタックオーバーフローを避けるために、この最適化は、再帰的な呼び出しをローカルループに変換する。
- LLVM IRインタープリタはより高速な#eval表現の解釈のために、調査された。この調査の結果は、コミットされ、単純な表現とよく機能するが、VMプリミティブの呼び出しということになると、制限があるため、デフォルトで起動されない。MacRubyからそれを十分に札用するために、LLVMインタープリタを多少修正しなければならない。これは、近い将来実行される。

最後に、GemStoneのRuby実装、MagLevはプライベートAlphaテスト中であり、Q2でBetaが登場する。互換性(RubySpec)およびベンチマーク結果(リンク)は、MagLevのWebサイトで利用可能である。プロジェクトの更新は、Twitterでも利用可能(リンク)である。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT