JRuby 近况:JRuby-Prof 帮助快速进行性能剖析,JRuby::Synchronized 提供自动同步

  • Werner Schuster
  • 丁雪丰

2010 年 3 月 28 日

话题:JavaRuby语言 & 开发架构

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 

在 GitHub 上能找到 JRuby-Prof 的源代码

JRuby::Synchronized 模块是最近加入 JRuby 的新特性。Charles Nutter 在 JRuby 用户列表中解释了JRuby::Synchronized 背后的思想

在 IRC 上和 MenTaLguY 讨论了要给 JRuby 增加一些并发集合后,我们增加了一个新特性:

require 'jruby/synchronized'

class MyClass include JRuby::Synchronized ...




obj.extend JRuby::Synchronized



include 或 extend 该模块的效果是让对这个类的对象(或单例对象)的所有方法调用都像包围在 Java 的 synchronized 块中一样。不会存在两个线程同时调用该对象的方法的情况(显然是以对象为基础的)。

这是为 JRuby 提供并发工具的一个尝试——您还希望看到什么新特性呢?

查看英文原文:JRuby Roundup: JRuby-Prof Allows Fast Profiling, JRuby::Synchronized for Automatic Synchronization

JavaRuby语言 & 开发架构