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