2012-06-07 3 views
4

내 애플리케이션의 특정 부분에서 공연을 측정해야합니다. 이 측정 값을 계산하려면 스프링 StopWatch 클래스를 사용합니다. 메소드에서 각 반복의 실행을 측정해야하는 루프가 있습니다.Spring은 반복 코드의 성능을 측정하는 클래스를 제공합니까?

루프 부분, 카운터 및 최소/최대/평균 값에 대해 알고 싶습니다. 불행히도 Spring StopWatch 클래스는 이러한 기능을 제공하지 않습니다. 예를 들어

, 다음 코드

StopWatch watch = new StopWatch("foo"); 
watch.start("First process"); 
doSomething(); 
watch.stop(); 
for (int i = 0; i < 10; i++) { 
    watch.start("loop"); 
    doAnotherThing(); 
    watch.stop(); 
} 
System.out.println(watch.prettyPrint()); 

의지 출력 : 내가 원하는 것은

StopWatch 'foo': running time (millis) = 1469 
----------------------------------------- 
ms  %  Task name 
----------------------------------------- 
01000 068% First process 
00078 005% loop 
00000 000% loop 
00016 001% loop 
00047 003% loop 
00015 001% loop 
00047 003% loop 
00094 006% loop 
00000 000% loop 
00109 007% loop 
00063 004% loop 

은이합니다 :

StopWatch 'foo': running time (millis) = 1469 
----------------------------------------- 
ms  %  Task name 
----------------------------------------- 
01000 068% First process 
00469 032% loop | min: 0 ; max: 109 ; average: 47 ; count: 10 

가 거기에 사용하는 것을 달성 할 수있는 방법을 봄?

PS : 나는 perf4j가 허용 것을 알고 있지만 나는 새로운 라이브러리를 추가 피할 수 있다면, 그것은

답변

0

내가 그러한 클래스의 잘 모르는 것 같아요 ... 좋은 것 Perf4J를 추가하지 않으려는 경우 클래스에 캡슐화합니다.

일반적인 통계 클래스는 가지고있는 것이 좋습니다. 스레드를 안전하게 만들어야합니다.