首页 > 解决方案 > 是否有一种简单的方法可以在运行时检测是否启用了 JRuby 分析?

问题描述

当只分析我的 JRuby 程序的一部分时,我进行如下操作:我将选项传递--profile.api给 JRuby,然后执行以下操作:

require 'jruby/profiler'
pdata = JRuby::Profiler.profile { my_code_to_be_profiled }

如果程序的调用者忘记通过--profile.api,该profile方法将引发异常。

我现在想在运行时测试是否启用了分析。如何以一种好的方式做到这一点?一种可能性是尝试分析一个空块并查看是否出现异常:

require 'jruby/profiler'
profiling_enabled = true # Let's be optimistic
begin
  JRuby::Profiler.profile {}
rescue RuntimeError
  profiling_enabled = false
end

这可行,但看起来不是很优雅。有人可以提供更好的解决方案吗?

标签: profilingjruby

解决方案


这些方面的东西应该起作用:

if JRuby.runtime.instance_config.is_profiling
  pdata = JRuby::Profiler.profile { my_code_to_be_profiled }
end

推荐阅读