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に並列化ツールを提供する実験である - あなたは、他に何が見たいですか?