我正在对我的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等)。