我正在尝试使用Ruby的标准lib分析器,而我不使用ruby-prof,因为这是一个非常繁琐的项目。
尽管如此,我总是得到类似的东西:
% 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
答案 0 :(得分:2)
我强烈建议使用JRuby内置分析器,详情请参阅:http://danlucraft.com/blog/2011/03/built-in-profiler-in-jruby-1.6/
stdlib探查器使用Ruby的功能,可以产生巨大的性能(set_trace_func等)。使用内置的分析器可以获得更好的结果,从而避免了这种开销。