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

Java에서 경과/실행 시간을 계산하는 방법은 무엇입니까?

<시간/>

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

  • currentTimeMillis() 메서드는 현재 시간을 밀리초 단위로 반환합니다. 메소드의 경과 시간을 찾기 위해 원하는 메소드 실행 전후의 시간 값의 차이를 얻을 수 있습니다.
  • nanoTime() 메서드는 현재 시간을 나노초 단위로 반환합니다. 메소드의 경과 시간을 찾기 위해 원하는 메소드 실행 전후의 시간 값의 차이를 얻을 수 있습니다.
  • Instant 클래스의 now() 메서드는 현재 시간을 반환하고 Duration.between() 메서드는 주어진 두 시간 값 간의 차이를 반환합니다. 이를 사용하여 메서드를 실행하는 데 걸린 시간을 확인할 수 있습니다.
  • Apache commons 라이브러리는 Stopwatch라는 클래스를 제공하며 start() stop() 및 getTime() 메서드를 제공하여 이를 사용하여 메서드 실행에 걸리는 시간을 확인할 수 있습니다.
  • java.util.Date 클래스의 getTime() 메소드는 현재 시간을 반환합니다. 메소드의 경과 시간을 찾기 위해 원하는 메소드 실행 전후의 시간 값의 차이를 얻을 수 있습니다.
  • getInstance().getTime().getTime() 을 사용하여 현재 인스턴스의 시간을 가져올 수도 있습니다. 차이를 구하여 경과 시간을 구한 후.

예:currentTimeMillis() 메소드 사용

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[]){  
      //Start time
      long begin = System.currentTimeMillis();
      //Starting the watch
      new Example().test();
      //End time
      long end = System.currentTimeMillis();      
     
      long time = end-begin;
      System.out.println();
      System.out.println("Elapsed Time: "+time +" milli seconds");
   }
}

출력

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: 4 milli seconds

예:nanoTime() 메서드 사용

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[]){  
      //Start time
      long begin = System.nanoTime();
      //Starting the watch
      new Example().test();
      //End time
      long end = System.nanoTime();      
     
      long time = end-begin;
      System.out.println();
      System.out.println("Elapsed Time: "+time);
   }
}

출력

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: 1530200

예:Instant 클래스 사용

import java.time.Duration;
import java.time.Instant;
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[]) {  
      //Starting time
      Instant start = Instant.now();
      new Example().test();
      //End time
      Instant end = Instant.now();
      long time = Duration.between(start, end).toMillis();
      System.out.println();
      System.out.println(time+" Milli seconds");

   }
}

출력

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,
3 Milli seconds

예:StopWatch 클래스 사용

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[]) {  
      //Instantiating the StopWatch class
      StopWatch obj = new StopWatch();
      //Starting the watch
      obj.start();
      new Example().test();
      //Stopping the watch
      obj.stop();
      System.out.println();
      System.out.println("Elapsed Time: "+obj.getTime() +" milli seconds");
   }
}

출력

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: 1 milli seconds

예:getTime() 메소드 사용

import java.util.Date;
public class Demo{
   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) {
      long startTime = new Date().getTime();
       new Demo().test();
      long endTime = new Date().getTime();
      long time = endTime - startTime;
      System.out.println("Execution time: " + time);
   }
}

출력

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, Execution time: 5

예:캘린더 클래스 사용

import java.util.Calendar;
public class Demo{
   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) throws InterruptedException {
      long startTime = Calendar.getInstance().getTime().getTime();
       new Demo().test();
      long endTime = Calendar.getInstance().getTime().getTime();
      long time = endTime - startTime;
      System.out.println("Execution time: " + time);
   }
}

출력

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, Execution time: 20