剖析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站点,以进行社区绩效分析和建议。