2011-01-27 4 views
1

私はRails(2.3.5)アプリケーションでいくつかの最適化を行っています。そして、フィルタチェーンのベンチマークのうまい方法を見つけることができません。レールはベンチマークのフィルタチェーンですか?

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

/テストページのコントローラで何もないと何も設定されているので、それだけで私たちのデフォルトのフィルタチェーンをロードプラスレイアウトをレンダリングしています:私はABのようなもので、サイトをテストです。私はリクエストごとに平均86msを得る。私は、フィルタ(skip_filterのfilter_chain)を無効にすると

それは37msに低下し、そして(レンダリング:レイアウト=> false)を配置することなく、それは16msのに低下します。 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のそれぞれにコードを落とすことができましたが、(宝石などの)フィルターのように、すべてのフィルターを1つの方法でラップする方法があることを望みました。

答えて

0

Performance Testing Rails Applicationsガイドでは、開始するには良い場所のように見えます。

+1

ありがとう、私はそこにたくさんのものをやっています。これは、コントローラ/リクエストの種類をあまり多くプロファイリングするのではなく、すべてのリクエストの前に何が起こるかです。私は上記の質問を明確にします。 –

+0

リンクが切れています。 3.2.14のバージョンはhttp://guides.rubyonrails.org/v3.2.14/performance_testing.htmlです。 – kristinalim

関連する問題