InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

JRuby Roundup:JRuby-Profで高速プロファイリングが可能に、JRuby::Synchronizedで同期の自動化

作者 Werner Schuster , 翻訳者 編集部N 投稿日 2010年3月30日

セクション
設計/アーキテクチャ,
デベロップメント
トピック
JRuby ,
Ruby ,
Java ,
動的言語 ,
言語 ,
Concurrency ,
Threading ,
プログラミング ,
パフォーマンス&スケーラビリティ

原文(投稿日:2010/03/24)へのリンク

JRuby-Prof は、 Daniel Lucraft氏による新しい JRuby専用のプロファイラである。Java用の成熟したプロファイラがたくさんあるが、JRubyの混合実行モードの出力は、読みづらい;あるJRubyコードは、インタープリテーションされ、あるJRubyのホットスポットは、バイトコードにJITコンパイルされる。ユーザが本当には、どの Ruby メソッドがどのくらい呼び出されているかだけを知りたいのなら 、Javaプロファイラを使うと、プロファイルに JRubyの内部メソッドが現れるので、プロファイル出力に、すべての上位メソッドが見れる。

JRuby-profは、 JRubyのフックを使って、メソッドの呼び出しのようなイベントに関する情報を集める。フックは、プロファイラを実装するより効率的な方法である、少なくとも、1行実行される前に、コールバック関数が呼ばれる、set_trace_funcを使う単純な方法に比べたら、より効率的である。

JRuby-prof は、Gemとして入手できる:

jruby -S gem install jruby-prof 

JRuby-prof のソースコードは、GitHubにある.

JRuby::Synchronized module がJRubyに新しく加わった。 Charles Nutter氏が、jruby-user listにJRuby::Synchronized の背後にある考えを説明している:

IRCで、 MenTaLguY氏とJRubyにコンカレントなコレクションを加えることを話した後に、試してみたい人たちに新しいフィーチャを思いついたんです:
require 'jruby/synchronized'
class MyClass include JRuby::Synchronized ...

or
obj.extend JRuby::Synchronized

この新しいモジュールを含んだり、拡張したりする効果は、そのクラスのオブジェクト(あるいは、そのクラスの「今シングルトンである」オブジェクト)に対する全てのメソッド呼び出しが、 Java synchronizedブロックの中にラップされたかのように振舞うことである。2つのスレッドが同時に、これらのオブジェクトにメソッドを実行することはできない(明らかに、1オブジェクトについてのこと)。

これは、 JRubyに並列化ツールを提供する実験である - あなたは、他に何が見たいですか?