2011-10-28 14 views
2

私は最近、私が書いたプログラムが驚くほど遅いことを発見しました。これまでの私のツールはYourkitとhprofでしたが、私が探している機能を見つけることができませんでした。特定のパッケージ用のスカラ/ Javaプロファイリング

理想的には、すべてのソースファイルに対してMATLAB Profiler style heat-mapが好きです。色が強いほど、その行に多くの時間が費やされたことを示しています。私はこれがたくさんあることを理解しているので、存在しなければ私は驚かないでしょう。

上記のことができない場合は、hprof cpu = samplesスタイルのプロファイリングを実行することができますが、プロジェクトで実行されるすべてのクラスのすべてのメソッドのリストを吐き出すのではなく、名前空間を除外できるように(例:java。、scala.collection。)、除外された名前空間でメソッドが呼び出されなかったスタックの最下位レベルに再配分されるメソッドに起因する時間があれば例えば、私は次のよう

def sillyMethod: Unit = { 
    0.until(1000000).map{ i => 
     (0 until 1000).toSeq + 1) == (0 until 1000).toSeq + 2) 
    } 
} 

のようなものを持っている場合、私はむしろ、すべての私の時間はsillyMethodでは、ないSeq.equalsに費やされていることを知っているであろう。これは利用可能なプロファイラで可能ですか?

EDIT:現在、私のコマンドとIntelliJ IDEAを実際に編集するためにsbtを使用しています。

答えて

3

私は非常に長い時間あなたのキットを見ていませんが、プロファイラがパッケージを除外したり、プロファイルされたパッケージを制限できなかった場合、私は驚いています。 JVMは実際にはそれほど悪くないプロファイラと共に出荷されます。 visualvmはjdkに含まれています。 profiling pageの2番目のスクリーンショットには「プロファイルのみのクラス」のセクションがありますので、そこにパッケージのみを置くと、他のプロファイルは作成されません。または、特定のパッケージやクラスのみをプロファイルすることができます。

2

JProfilerには、クラスとパッケージの集約レベルで動作するコールグラフがあります。

enter image description here

そして、あなたはセッションの設定であなたのトップレベルのパッケージを指定した場合、あなたはScalaのクラスのいずれかの内部を見ることはありません。

enter image description here

免責事項:私の会社はJProfilerを

を開発
関連する問題