Railsのプロファイリングツールをしばらく探していました。私は現在Ruby-profとrailsbenchをプレイしてテストしていますが、それを機能させるために必要な微調整とマングリングの量に少し不満を感じています。
微調整は(大いに)気にしませんが、Railsアプリをプロファイリングするための、もっと簡単で使いやすいツールが他にあるかどうか知りたいのですが。どのツールをお勧めしますか?
New Relic オファーRailsプロファイリング( 無料の 'Lite' バージョンを含む)。
組み込みプロファイラー も使用できます:
$ Ruby script/performance/profiler 'User.new' 5
% cumulative self self total
time seconds seconds calls ms/call ms/call name
189.25 1.76 1.76 1 1760.00 1760.00 Profiler__.start_profile
43.01 2.16 0.40 115 3.48 3.91 ActiveRecord::ConnectionAdapters::Column#simplified_type
8.60 2.24 0.08 15 5.33 8.67 Array#each
7.53 2.31 0.07 115 0.61 5.39 ActiveRecord::ConnectionAdapters::Column#initialize
6.45 2.37 0.06 115 0.52 0.52 ActiveRecord::ConnectionAdapters::Column#type_cast
5.38 2.42 0.05 690 0.07 0.07 Regexp#===
0.00 2.69 0.00 10 0.00 0.00 Process.times
0.00 2.69 0.00 10 0.00 0.00 Benchmark.times
Rails 3の場合、Rails profiler
を使用できることに注意してください。
ラックのバグはかなりクールです http://github.com/brynary/rack-bug
http://Rails-analyzer.rubyforge.org/ あなたが探しているものかもしれません。
最も時間のかかるアクションの明確なリストとアクションプロファイラーについては、プロダクションログアナライザーを強くお勧めします。
追加:本番ログアナライザーの場合、構成は必要ありません。本番ログを解析するだけで、最小/最大/中央値など、最も時間のかかるアクションのリストが表示されます。より多くのプロファイル/最適化を行う必要がある場所を確認するのは非常に良いことです。
チェックする価値のあるもう1つは、ミニプロファイラーです: https://github.com/SamSaffron/MiniProfiler/tree/master/Ruby
StackExchangeで使用されます(ただし、このバージョンはRubyに移植されています)。
Railscastは次のとおりです。 http://railscasts.com/episodes/368-miniprofiler?view=asciicast
OSX Leopardを使用している場合は、DTraceを試してみることができます。
また、FiveRunsの TuneUp も確認する必要があります。これは完全に無料で、プラグインとしてRailsアプリケーションにインストールされます。サーバーにデータ(ほとんどの場合非常に無害な情報)を送り返すことに注意してください)が、一部の人(つまり政府機関はそれについて非常に不満を持っているでしょう)ツールが無料であると考えていることの素晴らしさに驚かれると思います。
もう1つの優れた機能は、実行データを投稿して他の人がコメントできるようにし、長いクエリや不正なコードの診断に役立てることができることです。