Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 메소드의 실행 시간을 측정하는 방법은 무엇입니까?

<시간/>

일반적으로 경과 시간은 이벤트의 시작 지점에서 종료 지점까지의 시간입니다. 다음은 Java에서 경과 시간을 찾는 다양한 방법입니다 -

  • currentTimeMillis() 메서드는 현재 시간을 밀리초 단위로 반환합니다. 메소드의 경과 시간을 찾기 위해 원하는 메소드 실행 전후의 시간 값의 차이를 얻을 수 있습니다.
  • nanoTime() 메서드는 현재 시간을 나노초 단위로 반환합니다. 메소드의 경과 시간을 찾기 위해 원하는 메소드 실행 전후의 시간 값의 차이를 얻을 수 있습니다.
  • Instant 클래스의 now() 메서드는 현재 시간을 반환하고 Duration.between() 메서드는 주어진 두 시간 값의 차이를 반환하여 원하는 실행 전후의 시간 값을 검색하는 경과 시간을 얻습니다. 메서드를 만들고 Duration.between() 메서드를 사용하여 기간을 검색합니다.
  • Apache commons 라이브러리는 Stopwatch라는 클래스를 제공하며, 메소드 실행에 걸리는 시간을 찾기 위해 start() stop() 및 getTime() 메소드를 제공합니다.

다음 예제는 위에서 언급한 방법을 사용하여 방법의 실행 시간을 찾는 방법을 보여줍니다 -

import java.time.Duration;
import java.time.Instant;
import org.apache.commons.lang3.time.StopWatch;
public class Example {
   public void test(){
      int num = 0;
      for(int i=0; i<=50; i++){  
         num =num+i;
         System.out.print(num+", ");
      }  
   }
   public static void main(String args[]){
      Example obj = new Example();
      long start1 = System.nanoTime();
      obj.test();
      long end1 = System.nanoTime();      
      System.out.println("Elapsed Time in nano seconds: "+ (end1-start1));      
      long start2 = System.currentTimeMillis();
      obj.test();
      long end2 = System.currentTimeMillis();      
      System.out.println("Elapsed Time in milli seconds: "+ (end2-start2));
      Instant inst1 = Instant.now();
      obj.test();
      Instant inst2 = Instant.now();      
      System.out.println("Elapsed Time: "+ Duration.between(inst1, inst2).toString());
      StopWatch stopWatch = new StopWatch();
      stopWatch.start();
      obj.test();
      stopWatch.stop();      
      System.out.println("Elapsed Time in minutes: "+ stopWatch.getTime());
   }
}

출력

0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, Elapsed Time in nano seconds: 1882300
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, Elapsed Time in milli seconds: 1
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, Elapsed Time: PT0.001S
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, Elapsed Time in minutes: 1