剖析Rails控制器动作

时间:2020-03-05 18:44:08  来源:igfitidea点击:

在Ruby on Rails中分析控制器动作的最佳方法是什么。目前,我正在使用蛮力方法在我认为将成为瓶颈的地方放入" puts Time.now"调用。但这感觉真的非常肮脏。必须有一个更好的方法。

解决方案

回答

使用Benchmark标准库和Rails中可用的各种测试(单元,功能,集成)。这是一个例子:

def test_do_something
  elapsed_time = Benchmark.realtime do
    100.downto(1) do |index|
      # do something here
    end
  end
  assert elapsed_time < SOME_LIMIT
end

因此,在这里我们只做100次,通过Benchmark库计时,并确保它花费的时间少于SOME_LIMIT。

我们可能还会发现以下链接有用:Benchmark.realtime参考和Test :: Unit参考。另外,如果我们喜欢"读书",我从带有Rails的敏捷Web开发中获得了示例的想法,该主题讨论了所有不同的测试类型以及一些性能测试。

回答

有一个关于配置文件的Railscast非常值得一看

http://railscasts.com/episodes/98-request-profiling

回答

我们可能想尝试一下FiveRuns TuneUp服务,因为它确实令人印象深刻。免责声明:我没有以任何方式与FiveRuns关联,我只是尝试了此服务。

TuneUp是一项免费服务,我们可以通过该服务下载插件,然后在运行应用程序时在屏幕顶部注入一个面板,该面板可以展开以显示详细的性能指标。

它为我们提供了一些精美的图表,其中包括一个图表,该图表显示了在"模型","视图"和"控制器"中花费的时间比例。我们甚至可以根据需要向下钻取以查看ActiveRecord正在执行的各个SQL查询,并且只需单击一下即可显示基础数据库架构。

最后,我们可以选择将概要分析数据上传到FiveRuns站点,以进行社区绩效分析和建议。