이 글에서는 Java 프로그램에서 메소드의 실행 시간(execution time)을 계산하는 방법을 알아봅니다. 실행 시간은 종료 시간에서 시작 시간을 뺀 값으로 산출하며, 이를 위해 System.nanoTime() 함수를 활용합니다.
아래 예시를 통해 실제 동작 과정을 확인해 보겠습니다.
입력 및 출력 예시
입력
프로그램 실행
출력
프로그램이 실행 중입니다: 프로그램의 실행 시간은: 620872 나노초입니다
알고리즘
실행 시간을 측정하는 전체 절차는 다음과 같습니다.
- 시작 – 프로그램을 시작합니다.
- long 타입 변수 3개(
my_start_time,my_end_time,my_execution_time)을 선언합니다. System.nanoTime()함수를 호출하여 시작 시간을 기록하고my_start_time에 저장합니다.- 같은 방식으로 종료 시간을
System.nanoTime()으로 기록하여my_end_time에 저장합니다. my_end_time - my_start_time연산으로 총 실행 시간을 계산하고 그 값을my_execution_time에 저장합니다.- 결과를 화면에 출력합니다.
- 종료 – 프로그램을 마칩니다.
예제 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 컴파일 등의 영향을 받기 때문에 매번 실행할 때마다 값이 달라질 수 있다는 점을 유의해야 합니다. 더 정확한 성능 분석이 필요하다면 여러 번 반복 측정 후 평균값을 사용하는 것이 좋습니다.