10

我正在对我的应用程序进行“优化”,并试图了解 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

这些查询完全相同,不同之处在于旧方式是解析日志文件,而新方式是查询数据库日志表。

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

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

4

3 回答 3

14

这:

Rendered user/_old_log (25.7ms)

是只渲染_old_log部分模板的时间,它来自由ActionView ::LogSubscriber处理的ActiveSupport::Notification

这:

Completed 200 OK in 466ms

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

另外,请注意末尾的括号中的项目:

(Views: 124.6ms | ActiveRecord: 10.8ms)

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

于 2009-03-26T23:47:36.817 回答
3

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

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

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

于 2009-03-27T07:11:46.700 回答
-1

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

于 2009-03-26T22:23:14.630 回答