Java VisualVMでは、「セルフタイム」ではなく、メソッドの合計時間を表示する方法はありますか?(後者は、どのくらいの時間についても何も通知しないため、特に有用ではありません。メソッドは実際に実行にかかります。)
そうでない場合、スタンドアロンの無料のJavaプロファイラーでメソッドの合計時間を計算しますか?
トレースデータを「スナップショット」ビューで見ると、合計とセルフタイムを確認できます。
結果の表について表示される「スナップショット」ボタンを押します。これにより、「呼び出しツリー」ビューを含む新しいタブが作成され、自己と合計時間の内訳が表示されます。 「結合」ビューもこの情報を提供しますが、標準のプロファイリングビューと同様の「ホットスポット」ビューで画面スペースを分割します。
スナップショットは、標準の「プロファイラー」または「サンプラー」データから作成できます。ただし、「プロファイラー」スナップショットはアプリケーションを閉じる前にのみ作成でき、「サンプラー」スナップショットはいつでも作成できます。
(上記の情報はVisualVM 1.3.1に基づいています)
プロファイリング結果のスナップショットを撮るだけです。あなたはそこに壁時計時間とセルフタイムを得るでしょう。
ルーチンの合計時間を(ミリ秒ではなく)壁時計の実行時間の割合として取得する簡単な方法があります。待っている間にctrl-breakを使用して一連のスタックショットを取得します。ルーチンを含むそれらの割合は、かかる時間の割合です。精度は、何枚のショットを撮るかによって異なります。問題がある場所を探しているだけなら、正確な時間測定は必要ありません。 これがどのように機能するかの簡単な説明です。
jprofilerまたはいくつかのjavaagentツールを使用して、メソッドの実行時間を監視できます。githubには、simpleAPMなどのいくつかのオープンソースツールがあります。
各メソッドの実行にかかる時間を調べたいと思います。 JETMを使用してパフォーマンスを監視する必要があります。これにより、各メソッドの入口時間、出口時間、および時間差が得られます。どの方法がどれだけの時間を費やしているかがわかります。
Springを使用している場合は、JETMの統合が簡単になります http://jetm.void.fm/howto/spring_2_x_integration.html