Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 메소드 실행 시간을 측정하는 방법 완벽 가이드

이 글에서는 Java 프로그램에서 메소드의 실행 시간(execution time)을 계산하는 방법을 알아봅니다. 실행 시간은 종료 시간에서 시작 시간을 뺀 값으로 산출하며, 이를 위해 System.nanoTime() 함수를 활용합니다.

아래 예시를 통해 실제 동작 과정을 확인해 보겠습니다.

입력 및 출력 예시

입력

프로그램 실행

출력

프로그램이 실행 중입니다:
프로그램의 실행 시간은: 620872 나노초입니다

알고리즘

실행 시간을 측정하는 전체 절차는 다음과 같습니다.

  1. 시작 – 프로그램을 시작합니다.
  2. long 타입 변수 3개(my_start_time, my_end_time, my_execution_time)을 선언합니다.
  3. System.nanoTime() 함수를 호출하여 시작 시간을 기록하고 my_start_time에 저장합니다.
  4. 같은 방식으로 종료 시간을 System.nanoTime()으로 기록하여 my_end_time에 저장합니다.
  5. my_end_time - my_start_time 연산으로 총 실행 시간을 계산하고 그 값을 my_execution_time에 저장합니다.
  6. 결과를 화면에 출력합니다.
  7. 종료 – 프로그램을 마칩니다.

예제 1: 기본적인 실행 시간 측정

다음 예제는 단순히 문자열을 출력하는 구간의 실행 시간을 측정합니다.

public class Main {
    public static void main(String[] args) {
        long my_start_time, my_end_time, my_execution_time;
        my_start_time = System.nanoTime();
        System.out.println("프로그램이 실행 중입니다:");
        my_end_time = System.nanoTime();
        my_execution_time = my_end_time - my_start_time;
        System.out.println("프로그램의 실행 시간은: " + my_execution_time + " 나노초입니다");
    }
}

출력 결과

프로그램이 실행 중입니다:
프로그램의 실행 시간은: 129621 나노초입니다

예제 2: 연산 수행 시간 측정

이번에는 두 정수를 더하는 연산까지 포함하여 실행 시간을 측정해 봅니다.

public class Main {
   public static void main(String[] args) {
      long my_start_time, my_end_time, my_execution_time;
      my_start_time = System.nanoTime();
      int my_input_1 = 100;
      int my_input_2 = 250;
      int my_sum = my_input_1 + my_input_2;
      System.out.println("프로그램이 실행 중입니다:");
      my_end_time = System.nanoTime();
      my_execution_time = my_end_time - my_start_time;
      System.out.println("프로그램의 실행 시간은: " + my_execution_time + " 나노초입니다");
   }
}

출력 결과

프로그램이 실행 중입니다:
프로그램의 실행 시간은: 103801 나노초입니다

참고 사항

System.nanoTime()은 나노초(nanosecond) 단위의 정밀한 시간을 반환하기 때문에 짧은 코드 블록의 성능을 측정할 때 유용합니다. 다만 측정 결과는 JVM 상태, 하드웨어 환경, JIT 컴파일 등의 영향을 받기 때문에 매번 실행할 때마다 값이 달라질 수 있다는 점을 유의해야 합니다. 더 정확한 성능 분석이 필요하다면 여러 번 반복 측정 후 평균값을 사용하는 것이 좋습니다.