2012-02-06 6 views
4

環境:Linux Mint 32ビット、JRuby-1.6.5 [i386]、Rails 3.1.3。JRUBYレールアプリケーションのプロファイリング<unknown>要素

WEBrick(開発モード)でJRuby 1.6.5にデプロイされたレールアプリケーションのプロファイルを作成しようとしています。

マイJRUBY_OPTS:「-Xlaunch.inproc =偽--profile.flat」私のモデルの一つで

は、私は明示的な睡眠を導入(5)と、このメソッドはbefore_saveフックの一部として呼び出されることを確実にモデルを保存します。擬似コード...

class Invoice < ActiveRecord::Base 
<some properties here...> 

before_save :delay 

private 
def delay 
    sleep(5) 
end 
end 

上記のコードは、請求書のインスタンスが永続化されます直前に、方法は、遅延が自動的に呼び出されることを保証します。今

、Iは、(RSpecのユニットテストを介して)このモデルのインスタンスを作成するコードをプロファイルするとき、私は、次の出力を取得:私は代わりに、これら2つの要素を参照なぜ、上記の出力で

6.31  0.00  6.31   14 RSpec::Core::ExampleGroup.run 
6.30  0.00  6.30   14 RSpec::Core::ExampleGroup.run_examples 
6.30  0.00  6.30   1 RSpec::Core::Example#run 
6.30  0.00  6.30   1 RSpec::Core::Example#with_around_hooks 
5.58  0.00  5.58   1 <unknown> 
5.43  0.00  5.43   2 Rails::Application::RoutesReloader#reload! 
5.00  0.00  5.00   1 <unknown> 
5.00  5.00  0.00   1 Kernel#sleep 
4.87  0.00  4.87   40 ActiveSupport.execute_hook 
4.39  0.00  4.39   3 ActionDispatch::Routing::RouteSet#eval_block 
4.38  0.00  4.38   2 Rails::Application::RoutesReloader#load_paths 

をInvoice.delayまたはそれに類するもの

実際、JRUBY_OPTS(前述)と同じJRUBY_OPTSでレールサーバー(WEBrick)を起動すると、すべてのアプリケーションコードフレームが不明な要素がプロファイラ出力に表示されます。

何か間違っていますか?

+0

WEBrickからの出力はどのようになっていますか? – Lelon

答えて

1

プロファイルメソッドの最大数は、 Set -Xprofile.max.methods JRUBY_OPTSのように大きくなります(デフォルトは100000で十分です)。例えば。

export JRUBY_OPTS="--profile.flat -Xprofile.max.methods=10000000"