Как использовать профилировщик Ruby stdlib с Jruby? - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь использовать стандартный Ruby-профилировщик Ruby и не использую ruby-prof, потому что это проект jruby.

Хотя я всегда получаю что-то вроде:

  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
  0.00     0.93      0.00        1     0.00   930.00  #toplevel

Код, который генерирует это:

require 'profiler'
Profiler__.start_profile
#  profiling_result = RubyProf.profile do
result=  handle_request

#  end
#Profiler__.stop_profile

#  printer = RubyProf::FlatPrinter.new(result)
File.open("#{File.dirname(__FILE__)}/profiler/#{Time.now.to_i}.flat","w") do |f|
  Profiler__.print_profile f
end
Profiler__.stop_profile

1 Ответ

2 голосов
/ 26 августа 2011

Я настоятельно рекомендую использовать встроенный профилировщик JRuby, подробно здесь: http://danlucraft.com/blog/2011/03/built-in-profiler-in-jruby-1.6/

В профилировщике stdlib используется особенность Ruby, которая наносит огромный удар перфом (среди прочего set_trace_func). Вы получите лучшие результаты, используя встроенный профилировщик, который позволяет избежать таких издержек.

...