При профилировании только частей моей программы J Ruby я действую следующим образом: я передаю опцию --profile.api
J Ruby, а затем выполняю что-то вроде:
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
Это работает, но выглядит не очень элегантно. Кто-нибудь может предложить лучшее решение?