Java VisualVM에서 "self time"이 아닌 총 메소드 시간을 표시하는 방법이 있습니까? (실제로 메소드가 실행되는 데 걸리는 시간을 알려주지 않으므로 후자는별로 유용하지 않습니다.)Java VisualVM의 총 메소드 시간
그렇지 않은 경우 총 메소드 시간을 계산하는 독립형 무료 Java 프로파일 러가 있습니까?
Java VisualVM에서 "self time"이 아닌 총 메소드 시간을 표시하는 방법이 있습니까? (실제로 메소드가 실행되는 데 걸리는 시간을 알려주지 않으므로 후자는별로 유용하지 않습니다.)Java VisualVM의 총 메소드 시간
그렇지 않은 경우 총 메소드 시간을 계산하는 독립형 무료 Java 프로파일 러가 있습니까?
"스냅 샷"보기의 추적 데이터를 보면 자체 시간뿐만 아니라 총 시간을 볼 수 있습니다.
결과 테이블에 나타나는 "스냅 샷"버튼을 누릅니다. 이렇게하면 자동 시간과 총 시간을 구분하는 "호출 트리"보기가 포함 된 새 탭이 생성됩니다. "결합 된"뷰는이 정보도 제공하지만 표준 프로파일 링 뷰와 유사한 "핫 스폿"뷰로 화면 공간을 분할합니다.
스냅 샷은 표준 "프로파일 러"또는 "샘플러"데이터에서 만들 수 있습니다. 그러나 "프로파일 러"스냅 샷은 응용 프로그램이 닫히기 전에 만 만들 수 있으며 "샘플러"스냅 샷은 언제든지 만들 수 있습니다.
(위의 정보는 VisualVM 1.3을 기반으로합니다.1)
당신은 총 얻을 수있는 간단한 방법이있다
및
long endTime = System.currentTimeMillis();
그리고 마지막으로이 결과
long result = endTime - startTime; //Note, part might be backwards, I don't
//Remember
를 얻기 위해 beggining에서
long startTime = System.currentTimeMillis();
를 사용할 수 있습니다 루의 시간 벽 시계 실행 시간의 백분율 (milliseconds가 아닌). 기다리는 동안 ctrl-break를 사용하여 스택 샷을 얻으십시오. 루틴이 포함 된 비율은 소요 시간 비율입니다. 정확도는 촬영하는 횟수에 따라 다릅니다. 문제가있는 곳을 찾고 있다면 정확한 시간 측정이 필요하지 않습니다. Here's a short explanation of how it works.
프로파일 링 결과의 스냅 샷을 찍으십시오. 벽시계는 물론 자기 시간을 얻을 수 있습니다.
JavaAssist는 소스를 건드리지 않고 자바 바이트 코드를 조작하는 클래스 라이브러리입니다. 방법을 실행하기 위해 취해진 시간을 으로 측정하는 예를 들어 봅시다.
public class Subject {
/**
* Timetaken for start & end of the method
*
* @throws InterruptedException
*/
public void method2() throws InterruptedException {
// Some business logic :)
Thread.sleep(2000);
}
}
는 그림과 같이 코드의 시작과 방법의 끝을 추가하여
Subject.methods()
을 향상시킬 수
subject.method2()
실행에 걸리는 시간을 측정합니다.
public class JavaAssist {
public static void main(String[] args) {
timeTaken();
}
public static void timeTaken() {
try {
ClassPool p = ClassPool.getDefault();
CtClass cc = p.get("Subject");
CtMethod meth2 = cc.getDeclaredMethod("method2");
meth2.insertBefore("System.out.println(\" Start : \"+new java.util.Date());");
meth2.insertAfter("System.out.println(\" End : \"+new java.util.Date());");
// cc.writeFile(".");
Class c = cc.toClass();
Subject s = (Subject) c.newInstance();
s.method2();
cc.detach();
} catch (Exception e) {
// suppressed
}
}
}
출력 : 시작 : 수요일 5월 26일 동부 서머 타임 17시 24분 18초 2010 종료 : 수요일 5월 26일 동부 서머 타임 17시 24분 20초 2010
참조 http://www.csg.is.titech.ac.jp/~chiba/javassist/tutorial/tutorial.html#read
http://www.csg.is.titech.ac.jp/~chiba/javassist/html/
출발지 : http://www.senthilb.com/2010/05/javaassist-byte-code-enhancement.html
각 메서드 실행에 걸리는 시간을 확인하고 싶습니다. JETM을 사용하여 성능을 모니터하고 싶을 것이다. 이것은 각 방법에 대한 입구 시간, 출구 시간 및 시차를 제공합니다. 얼마나 많은 시간이 걸리는지 알 수 있습니다. 당신은 스프링을 사용하는 경우
그때 당신이 방법은 말했나 시간을 실행 모니터링하는 JProfiler와 또는 일부 javaagent 도구를 사용할 수 있습니다 JETM에게 http://jetm.void.fm/howto/spring_2_x_integration.html
를 쉽게 통합 될 것은처럼 GitHub의에 대한 몇 가지 오픈 소스 도구입니다 simpleAPM.
이 대답은 가장 깊고 도움이됩니다. 나는 그것의 짧은 스크린 캐스트를 만들었다. http://rhnh.net/2011/08/03/profiling-clojure –
Xavier, 스크린 캐스트에 감사드립니다. 그것은 그것을 분명하게했다. –