JRuby-Prof 是由 Daniel Lucraft 开发的一款新的特定于 JRuby 的性能剖析器。虽然有很多成熟的针对 Java 的剖析器,但 JRuby 的混合执行模式让它们的输出难以阅读;某些 JRuby 代码会被解释执行,某些 JRuby 热点则会被编译成字节码。如果使用 Java 的剖析器,JRuby 的内部方法会出现在剖析结果中,占据输出的前几位,而用户往往只是想知道特定的 _Ruby_ 方法的调用情况。
JRuby-Prof 通过 JRuby 的钩子方法来获取类似方法调用之类的事件信息,这是一种实现剖析器的有效途径,至少和 set_trace_func 方法相比会更有效一些,set_trace_func 是一个回调方法,在一行代码执行前会被调用。
可以通过 Gem 的方式来获取 JRuby-Prof:
jruby -S gem install jruby-prof
JRuby::Synchronized 模块是最近加入 JRuby 的新特性。Charles Nutter 在 JRuby 用户列表中解释了 JRuby::Synchronized 背后的思想:
在 IRC 上和 MenTaLguY 讨论了要给 JRuby 增加一些并发集合后,我们增加了一个新特性:
复制代码
require 'jruby/synchronized' <br></br> class MyClass include JRuby::Synchronized ...或
obj.extend JRuby::Synchronized<br></br>
include 或 extend 该模块的效果是让对这个类的对象(或单例对象)的所有方法调用都像包围在 Java 的 synchronized 块中一样。不会存在两个线程同时调用该对象的方法的情况(显然是以对象为基础的)。
这是为 JRuby 提供并发工具的一个尝试——您还希望看到什么新特性呢?
查看英文原文: JRuby Roundup: JRuby-Prof Allows Fast Profiling, JRuby::Synchronized for Automatic Synchronization
评论