2011-12-22 4 views
1

I이 방법은 정확한 방법의 실행 시간을 계산하는 경우 궁금 :실행 시간 계산은 얼마나 정확합니까?

public class GetExecutionTimes { 

    public static void main(String args[]) { 
    long startTime = System.currentTimeMillis(); 
    GetExecutionTimes ext = new GetExecutionTimes(); 
    ext.callMethod(); 
    long endTime = System.currentTimeMillis(); 
    System.out.println("Total elapsed time in execution of" 
     + " method callMethod() is :" + (endTime - startTime)); 
    } 

    public void callMethod() { 
    System.out.println("Calling method"); 
    for (int i = 1; i <= 10; i++) { 
     System.out.println("Value of counter is " + i); 
    } 
    } 
} 

을 구체적 : 시간차 I 상이한 조건에서 실행하면 동일한 것인가?

어떻게하면 더 정확하게 계산할 수 있습니까?

답변

2

마이크로 벤치 마크를 작성하는 데는 여러 가지 측면이 있습니다. 가비지 수집과 JIT 컴파일은 두 가지입니다. 당신은 시간에 당신은 시작 시간을 등록하기 전에 생성자 호출을 이동해야 callMethod() 유일한 방법을 시도 할 경우 How do I write a correct micro-benchmark in Java?

0

:

는 내가 아주 좋은 출발점으로 다음을 제안합니다.

또한 nanoTime()를 사용해야보다는 currentTimeMillis() 편지 인해 로컬 클럭의 변화 (단순히 시간을 변경 시스템에 시간 조정 또는 누군가를 절약 예를 들어, 일광)에 오류에 취약하기 때문이다.

정확도는 플랫폼에 따라 다르며 함수 이름이 제안하는 단위가 반드시 다를 수 있습니다.

관련 문제