Rails对过滤器链进行基准测试?

时间:2011-01-27 16:59:36

标签: ruby-on-rails ruby benchmarking before-filter

我正在对我的Rails(2.3.5)应用程序进行一些优化,似乎无法找到对过滤器链进行基准测试的优雅方法。我正在测试网站,例如:

ab -n 200 -c 3 -i -k http://localtestingserver:80/test

/ test设置在控制器中没有任何内容,页面中没有任何内容,所以它只是加载我们的默认过滤器链并渲染布局。每个请求我平均得到86毫秒,很好。

当我禁用过滤器(skip_filter filter_chain)时,它会下降到37毫秒,如果没有布局(render:layout => false),它会下降到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]

我想更好地理解和描述在调用控制器之前发生的事情 - 我可以很好地分析控制器本身。就像在上面的请求中额外的212ms来自哪里。显然我可以将代码放入我自己的before_filters中,但希望有一种方法可以一次性包装每个过滤器(比如来自包含的gems等)。

1 个答案:

答案 0 :(得分:0)

Performance Testing Rails Applications指南似乎是一个很好的起点。