programing tip

프로그램의 실행 시간을 계산하는 방법은 무엇입니까?

itbloger 2020. 7. 28. 08:02
반응형

프로그램의 실행 시간을 계산하는 방법은 무엇입니까? [복제]


가능한 중복 :
Java에서 메소드 실행 시간을 어떻게 설정합니까?

프로그램을 작성했으며 이제 프로그램의 총 실행 시간을 처음부터 끝까지 계산하려고합니다.

어떻게해야합니까?


System.nanoTime사용 하여 현재 시간을 가져 오십시오.

long startTime = System.nanoTime();
.....your program....
long endTime   = System.nanoTime();
long totalTime = endTime - startTime;
System.out.println(totalTime);

위의 코드는 프로그램의 실행 시간을 나노초 단위로 인쇄합니다.


기본 메소드의 시작 부분에 다음 코드 줄을 추가하십시오.

final long startTime = System.nanoTime();

그런 다음 기본 메소드의 마지막 줄에 다음을 추가 할 수 있습니다.

final long duration = System.nanoTime() - startTime;

duration이제 프로그램이 실행 된 시간을 나노초 단위로 포함합니다. 예를 들어 다음과 같이이 값을 인쇄 할 수 있습니다.

System.out.println(duration);

지속 시간을 초 단위로 표시하려면 값을 1'000'000'000으로 나누어야합니다. 또는 Date객체 를 원하는 경우 : 분, 시간 등을 인쇄 Date myTime = new Date(duration / 1000);하는 다양한 방법에 액세스 할 수 있습니다 Date.


시스템을 사용하십시오. currentTimeMillis () 또는 시스템. 더 정확한 판독을 원하면 nanoTime (). 일반적으로 사용자에게 값을 출력해야하는 경우 밀리 초가 정확합니다. 또한, System.nanoTime() 따라서 당신이 방법을 사용하는 경우, 반환 값이 정확하지, 가능성이있을 수 있습니다, 음수 값을 반환합니다.

일반적으로 널리 사용되는 방법은 밀리 초입니다.

long start = System.currentTimeMillis();

... 


long end = System.currentTimeMillis();

NumberFormat formatter = new DecimalFormat("#0.00000");
System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");

나노초는 일반적으로 단위 테스트 및 벤치마킹과 같은 매우 짧고 정확한 프로그램 실행을 계산하는 데 사용됩니다. 따라서 전체 프로그램 실행의 경우 밀리 초가 바람직합니다.


이에 대한 일반적인 접근 방식은 다음과 같습니다.

  1. 벤치 마크 시작 시점 (예 : 시작 시점)을 확인하십시오 main().
  2. 코드를 실행하십시오.
  3. 벤치 마크 종료 시점 (예 : 종료 시점)을 확인하십시오 main().
  4. 종료 시간에서 시작 시간을 빼고 적절한 단위로 변환하십시오.

힌트 : System.nanoTime()또는을보십시오 System.currentTimeMillis().


응용 프로그램이 시작되는 시간을 가져 와서 응용 프로그램이 종료되는 시간과 비교해야합니다.

Wen 앱이 시작됩니다.

Calendar calendar = Calendar.getInstance();

// Get start time (this needs to be a global variable).
Date startDate = calendar.getTime();

응용 프로그램이 종료 될 때

Calendar calendar = Calendar.getInstance();

// Get start time (this needs to be a global variable).
Date endDate = calendar.getTime();

차이 (밀리 초)를 얻으려면 다음과 같이하십시오.

long sumDate = endDate.getTime() - startDate.getTime();

Beside the well-known (and already mentioned) System.currentTimeMillis() and System.nanoTime() there is also a neat library called perf4j which might be useful too, depending on your purpose of course.

참고URL : https://stackoverflow.com/questions/5204051/how-to-calculate-the-running-time-of-my-program

반응형