【发布时间】:2011-01-27 16:59:35
【问题描述】:
我正在对我的 Rails (2.3.5) 应用程序进行一些优化,但似乎找不到对过滤器链进行基准测试的优雅方法。我正在使用以下内容测试该网站:
ab -n 200 -c 3 -i -k http://localtestingserver:80/test
/test 设置时控制器中没有任何内容,页面中也没有任何内容,因此它只是加载我们的默认过滤器链并渲染布局。我每个请求平均得到 86 毫秒,很好。
当我禁用过滤器(skip_filter filter_chain)时,它下降到 37 毫秒,而没有布局(渲染:布局 => 假)它下降到 16 毫秒。有没有一种方法可以进行基准测试,也许是 Benchmark.realtime,每个函数都加载到过滤器链中,在控制器被调用之前(或者实际上是之后)?我可以输出一个请求中调用的所有过滤器的列表吗?
谢谢,
丹
编辑
我正在使用 Hodel3000 记录器和 Oink,因此根据请求获取输出,例如:
Jan 27 17:56:55 testing rails[19611]: Memory usage: 98748 | PID: 19611
Jan 27 17:56:55 testing rails[19611]: Instantiation Breakdown: Total: 2 | Room: 1 | User: 1
Jan 27 17:56:55 testing rails[19611]: Completed in 240ms (View: 28, DB: 0) | 200 OK [/test]
我只是想更好地理解和分析在调用控制器之前发生的事情 - 我可以很好地分析控制器本身。就像上述请求中额外的 212 毫秒一样。显然,我可以将代码放入我自己的每个 before_filters 中,但希望有一种方法可以一次性包装每个过滤器(例如来自包含的 gem 的过滤器等)。
【问题讨论】:
标签: ruby-on-rails ruby benchmarking before-filter