我怎样才能确定是什么让我的部分渲染得如此缓慢?

时间:2011-12-21 21:52:06

标签: performance ruby-on-rails-3.1 profiling

我正在处理一个必须呈现一个非常大的页面的应用程序,该页面由一堆部分组成。我可以在日志中看到每个部分的渲染时间,有几个需要超过500毫秒。

显然,这是不可接受的。 如何分析这些部分的渲染?例如,我如何能够对其中调用的方法进行细分,并说:“哦,我在link_to的Y使用上花费了X毫秒”,等等。

我正在使用Ruby 1.9.2-p290(如果有帮助,我可以使用1.9.3)和Rails 3.1.3。

1 个答案:

答案 0 :(得分:2)

我通常会使用ruby_prof gem。

安装gem,然后设置一个看起来像这样的around_filter

def log_profile
  result =RubyProf.profile do
    yield
  end

  File.open(Rails.root.join("profile.html"),"w") do |out|
    printer = RubyProf::GraphHtmlPrinter.new(result)
    printer.print(out,:min_percent=>0)
  end
end

这会将动作的个人资料转储到profile.html,供您检查。 Ruby prof有一堆你可以使用的输出格式化程序。请记住在cache_classes上执行此操作 - 您不希望类重新加载模糊视图