2011-01-27 63 views
1

我正在做我的Rails(2.3.5)应用程序的一些优化,似乎无法找到一个过滤器链的基准的优雅方式。我是AB的东西,如测试网站:Rails基准过滤器链?

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

/测试设置与任何控制器并没有什么页面,所以它只是我们加载默认的过滤链加渲染的布局。每次请求平均得到86毫秒,没问题。

当我禁用过滤器(skip_filter filter_chain)它下降到37ms,并没有布局(渲染:布局=> false)它下降到16ms。有没有一种方法可以进行基准测试,或许可以使用Benchmark.realtime,每个函数都在调用控制器之前(或确实在之后)被加载到过滤器链中?我是否可以输出在请求中调用的所有过滤器的列表?

感谢,

编辑

我使用的Hodel3000记录仪和哼因此获得每个请求的输出,如:

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中,但希望有一种方法可以一次性包装每个过滤器(如包含的gem等中的过滤器)。

回答

0

Performance Testing Rails Applications指南看起来是一个很好的开始。

+1

谢谢,我在那里做了很多东西。没有太多的分析不同的控制器/请求,但是在每个请求之前会发生什么。我会澄清上面的问题。 – 2011-01-28 09:18:46