2016-10-23 8 views
0

時間の経過とともにコードの各メソッドのパフォーマンスを提供する必要があるという状況に陥りました。Javaメソッドのパフォーマンスを計算する上での助けが必要

これは多層アプリケーションであり、各レベルに対応する必要があります。 Like

Class A.methodA() 
{ 
    Class B.methodB() 
     { 
      Class C.methodC() 
      { 
       //Time Taken 30 sec 
      } 
      //Time Taken 40 secs 
     } 
    //Time Taken 50 secs 
} 

全操作が50秒で完了しました。

これは私がレポートを提供する方法です。各方法の開始時間と停止時間を手動で追跡するよりも、フレームワークや簡単な方法がありますか? 私はJava開発に新しいので、これを簡単に行うのは難しいです。

+1

yourKitまたはJProfilerを – maasg

答えて

1

有効なJavaコードのように見えないため、あなたが提供してくれたこのコードの意味が不明です(メソッドとクラスを混同している可能性がありますか?)最も簡単な解決策は、System.currentTimeMillisここではいくつかの簡単な例です:

public class Main { 
    public static void main(String[] args) throws IOException { 
     long t1 = System.currentTimeMillis(); 
     //some code you want to check 
     doOtherWork(); 
     long t2 = System.currentTimeMillis(); 
     System.out.println("Main time: " + (t2-t1)); 

    } 

    public static void doOtherWork(){ 
     long t1 = System.currentTimeMillis(); 
     //some code you want to check 
     evenMoreWork(); 
     long t2 = System.currentTimeMillis(); 
     System.out.println("doOtherWork time: " + (t2-t1)); 
    } 

    public static void evenMoreWork(){ 
     long t1 = System.currentTimeMillis(); 
     //some code you want to check 
     long t2 = System.currentTimeMillis(); 
     System.out.println("evenMoreWork time: " + (t2-t1)); 
    } 
} 

は、mainメソッドに費やさその時間を覚えても、それが呼び出されるすべてのメソッドで費やされた時間が含まれます。

+0

のようなプロファイラに見て助けをちょっと感謝。しかし、私はすでにこれをしました。しかし、方法がたくさんあるので、私は別の簡単な方法を探しています。 – ConfusionMaster

+0

下位層に例外がある場合、コードはt2まで到達しません。 – ConfusionMaster

0

探しているツールを「プロファイラ」といいます。

0

どのような種類のプロファイリングを使用する場合でも、アプリのパフォーマンスの結果に影響しますのでご注意ください。ときには影響が小さく、ときには目立つこともあります。

最も簡単なことは、jvisualvmjdkにバンドルされています)またはjavaのその他のプロファイラでアプリケーションに接続することです。ここにあなたに示すことができるものの例があります。

jvisualvm method profiling

関連する問題