2013-02-09 3 views
0

Java 프로그램에서 걸리는 시간을 기록하고 싶습니다.녹화 프로그램의 CPU 시간

int starttime=System.nanoTime(); 
//program code 
int endTime=System.nanoTime(); 
int timetaken=starttime-endTime; 

이 방법의 문제는 실행중인 여러 프로그램이있는 경우, 다음 endTime- 사용자 및 STARTTIME의 차이는 내 프로그램에 의해 걸리는 시간이되지 않는 것입니다 : 대부분의 포럼 같은 것을 제안한다. 또한 CPU 등에서 다른 프로그램을 예약하는 데 걸리는 시간이기도하지만, 필자는 프로그램에 걸린 시간을 기록하는 데에만 관심이 있습니다. 이 시간은 어떻게 얻을 수 있습니까?

+1

프로필러가 필요합니다. 여기를 참조하십시오 : http://stackoverflow.com/questions/3571166/best-and-safest-java-profiler-for-production-use –

답변

2

article에서 답을 찾을 수 있습니다. 문서에서 따옴표를 붙이십시오 :

CallManagementFactory. getThreadMXBean()을 호출하여 에 현재 JVM 스레드를 설명하는 ThreadMXBean을 가져옵니다. bean의 getCurrentThreadCpuTime() 메소드는 현재 스레드의 CPU 시간을 리턴합니다. getCurrentThreadUserTime() 메서드는 스레드의 사용자 시간을 반환합니다. 나노초에서 이러한 보고서 번 모두 는

응용 프로그램은 응용 프로그램 스레드 당 CPU 시간을 기록하고 모두에서 응용 프로그램에 의해 촬영 총 CPU 시간을 얻을 수를 요약해야 할 것입니다 멀티 스레드 경우 그 스레드의.

그런 말로하면 - 당신이 정말로 당신의 CPU 소비를 프로파일 링에 대한 진지한면 아마 당신은 프로파일 러를 사용해야합니다. visualvm (jdk와 함께 번들로 제공됨)과 같은 무료 오픈 소스로 시작할 수 있습니다. 많은 다른 것들 중에서도이 정확한 질문에 매우 쉽게 대답 할 수 있습니다.