2013-08-11 7 views
6

私はRubyのプロファイリングが新しく、ruby-profのようなものが一般的です。私はちょうど宝石をインストールし、私のプログラムを起動さ:ruby​​-profにRubyコア/標準ライブラリ/ gemメソッドを無視させるにはどうすればよいですか?

ruby-prof ./my-prog.rb 

すべてのRubyのコアと標準ライブラリのメソッドのデータをプロファイリング、およびその他の宝石が含まれているためしかし、出力は、非常に冗長です。例えば、上位3行は、次のとおりです。私はすでに文字列と配列多くのことを、そしておそらくそれらのクラスで私のプログラムのお得な情報がすでに地獄が出て最適化されていたことを知っているので、私のためにリモートで有用な情報ではありません

8.79  0.011  0.010  0.000  0.001  3343 *String#% 
7.28  0.078  0.009  0.000  0.069  2068 *Array#each 
4.93  0.038  0.006  0.000  0.032  1098 *Array#map 

そのうちの。私は私のコードのホットスポットだけを気にします。

私はいくつかの他のプリンタモードを試しました。​​と-p call_stackですが、すべて同じ問題があります。

-x, --exclude regexp    exclude methods by regexp (see method elimination) 
-X, --exclude-file file   exclude methods by regexp listed in file (see method elimination) 
    --exclude-common-cycles  make common iterators like Integer#times appear inlined 
    --exclude-common-callbacks make common callbacks invocations like Integer#times appear 

が、私は本当に私のコードだけのデータをプロファイリングされ、欲しいものを得るための任意の明白な方法があるようには思えない。

私はruby-profは、いくつかの方法の除去及び簡素化をサポートしていることがわかりRuby core/stdlibのコード内で時間が経過し、他の宝石はコード内で経過した時間としてカウントされます。

私は自分のコードの間の経過時間の内訳を見てみたいん当時とのみ、私のコードが原因何千回としませ好調と呼ばれることにパフォーマンス上のボトルネックになっている方法fooを持っていることがわかりますしたらその特定のメソッド内で呼び出されるコア/ライブラリコードが含まれます。

これは標準の機能ではありませんなぜ私はそれが誰もが何をしたいのかだと期待するので、私は、理解することはできません。潜在的に、最初に独自のコードをプロファイリングし、その後、最適化するために、物事を使い果たししたらあなたが使用する宝石やRuby core/stdlibの最適化を開始してください。私は何が欠けていますか?

答えて

0

テストでプロファイルとベンチマークを行いたい場合があります。 Minitestはテストフレームワークでこれを可能にします。そうすれば、タイミングを取るために特定の行動に集中することができます。

Ruby 2.0またはRuby 1.9以下のGemとして利用できます。

同じ方法でプロファイリングする限り、require 'profile'と同じテストに使用します。

このblog post詳細については、私はそれが大きく変わったとは思わない。

+0

答えてくれてありがとう、私のテストスイートは、すでにRSpecの中に書かれています。私は 'profile'を行っていくつもりですが、そのブログは結果を汚染するライブラリメソッドの問題とまったく同じ問題を抱えているようです。 –

+0

ええ、それは確かに答えの正確な一致ではありませんが、あなたを近づけるかもしれません。そして、RSpecを使う限り、彼らがどのように最小限にしたのか見ていくと、手がかりが得られるかもしれません。 RSpecはちょうどRubyで、それを開いて修正します...そしておそらく機能を提出してください! – vgoff

2

これはruby-profの大きな問題だと私は同意します。私はperftools.rbを好む傾向がありました。これはgperftoolsと統合され、さまざまなfocus and ignore optionsと、hotspots and their call treesを迅速に理解するために優れたグラフィカルなレポートをサポートしています。ルビーとprof

、あなたはまた、KCacheGrind形式を出力し、分析のためKCacheGrind Viewerを使用してみてください。多くの視覚化モードを持ち、アドホックなフィルタリングと結果の探索を容易にします。

関連する問題