2016-11-24 8 views
0

パッケージ内の各メソッド(クラスが含まれていない)の所要時間を計算する方法はありますか?各メソッドの開始時刻と終了時刻をパッケージ化する代わりに。他のオプションはありますか?パッケージ内の各メソッドの時間計算。

ありがとうございます!あなたはまだメソッドごとにこの注釈を入れる必要があるでしょう

@Aspect 
public class TimedAnnotation { 
    @Around("execution(* *(..)) && @annotation(TimedMethod)") 
    public Object around(ProceedingJoinPoint point) throws Throwable { 
     long start = System.currentTimeMillis(); 
     try { 

      Object p = point.proceed(); 

      return p; 
     } 
     finally { 
      System.out.println(System.currentTimeMillis() - start); 
     } 
    } 
} 

+1

あなたはAOPを見ましたか? –

+0

これは一度だけ必要ですが、永遠には必要でない場合は、Java Profiler – Ralph

+0

を調べるよりも、アプリのプロファイリングに関するこのヒントを確認してください:https://www.infoq.com/articles/java-profiling-with-open- source/ –

答えて

0

AspectJのを使用すると、()注釈を.around使用することができます

@TimedMethod 
public void doSomething() { 
... 
} 

そして、あなたはAspectJのを追加する必要がありますあなたのpom.xmlに:

<dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.7.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.8.9</version> 
    </dependency> 
+0

このコードでは動作しますか?public void doSomething(){xyzclass.execute()}私は、xyzclassでdoSomethingとexecuteの両方のメソッドの実行時間を計算する必要があります。 – manikumar

+0

xyzclassを制御している場合は、.execute()の前後に@TimedMethodを置くこともできます。 –