大多数关于 Rails 分析的帖子都推荐Ruby-Prof。要使用它Ruby-Prof
,我需要为每个控制器操作编写至少一个新测试,然后手动比较结果以查看耗时最长且可能是优化的候选对象。
如果我已经确切地知道我正在关注什么请求,那就太好了。如果我首先尝试识别热点,这似乎不太好。鉴于我已经拥有一个庞大的集成测试套件,涵盖了我关心的所有应用程序功能,看来我真正想做的是:
- 运行整个测试套件并捕获每个控制器操作所花费的时间。(或模型方法,或我想要的任何粒度级别。)
- 打印两个列表,每个控制器操作中的最坏情况和平均情况时间。
- 对每个列表进行排序并开始调查运行时间最长的控制器操作,现在使用
Ruby-prof
或其他分析工具深入了解调用堆栈。最坏情况的时间将识别可能有问题的请求参数(即,在后端触发慢代码),而我在编写性能测试时不必考虑它们。
人们是否有某种原因不以这种方式使用集成测试套件,而不是基本上用第二个性能测试套件来复制它?我没有看到它建议。在我编写代码来做这样的事情之前(大概有一个before_action
in ApplicationController
,是否已经有一个工具呢?