理解Ruby on Rails渲染时间

时间:2009-03-26 22:12:16

标签: ruby-on-rails optimization benchmarking performance

我正在对我的应用程序进行“优化”,我正在尝试理解rails(版本2.2.2)在渲染结束时给出的输出。

这是“旧的”方式:

Rendered user/_old_log (25.7ms)
Completed in 466ms (View: 195, DB: 8) | 200 OK

以及“新”方式:

Rendered user/_new_log (48.6ms)
Completed in 337ms (View: 192, DB: 33) | 200 OK

这些查询完全相同,区别在于旧的方法是解析日志文件,而新方法是查询数据库日志表。

页面的实际速度不是问题(用户理解这是一个缓慢的请求)...但我希望页面尽快响应,即使它是一个“慢”页面。< / p>

所以,我的问题是,这些数字代表/意味着什么?换句话说,哪种方式更快,为什么?

3 个答案:

答案 0 :(得分:14)

此:

Rendered user/_old_log (25.7ms)

是时候呈现 _old_log部分模板,来自ActiveSupport::NotificationActionView::LogSubscriber处理

此:

Completed 200 OK in 466ms

是否返回了http状态,以及整个请求的总时间。它来自ActionController::LogSubscriber

另外,请注意最后的那些括号内的项目:

(Views: 124.6ms | ActiveRecord: 10.8ms)

这些是分别渲染整个视图(部分和全部)和所有数据库请求的总时间,也来自ActionController::LogSubscriber

答案 1 :(得分:3)

乔丹的回答是正确的。换句话说,第一个数字是页面加载的时间。第二个是视图生成的时间。最后一个数字是数据库处理您发送给它的所有查询所需的时间。

您还可以通过从第一个数字中减去最后两个数字来估算您的Controller和Model代码所花费的时间,但更好的方法是使用Benchmark.measure方法(http://www.ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html)。

您的新方式似乎有所改进,因为控制器/模型中的代码完成得更快。

答案 2 :(得分:-1)

您的新方式是花费更少的时间,但更多时间渲染模板。