본문 바로가기

Java

[Java] 실행 시간 측정

728x90

코드 실행 시간 측정 방법

코드를 작성할 때 시간 복잡도를 고려하는 것이 중요합니다. 하지만 O(n) 같은 개념적인 복잡도뿐만 아니라, 실제 실행 시간을 측정하는 것도 필요합니다. 이를 위해 정확한 실행 시간을 측정하는 방법을 정리해 보았습니다.

 

 

1. System.currentTimeMillis() , System.nanoTime()

public class Main {
    static final long COUNT = 100_000_000;

    public static void main(String[] args) {
        // 시작 시간 측정
        long startTime = System.currentTimeMillis();
        long startNanoTime = System.nanoTime();

        for (long i = 0; i < count; i++) {

        }

        // 종료 시간 측정
        long endTime = System.currentTimeMillis();
        long endNanoTime = System.nanoTime();

        System.out.println(endTime - startTime);
        System.out.println(endNanoTime - startNanoTime);
    }
}

 

  • System.currentTimeMillis()를 사용하여 현재 시간을 밀리초(ms) 단위로 가져올 수 있음
  • System.nanoTime()를 사용하여 현재 시간을 나노 단위로 가져올 수 있음
  • 시작 시간과 종료 시간을 비교하여 코드의 실행 시간을 측정

 

2. 스프링의 StopWatch 활용

스프링 프레임워크에서 제공하는 StopWatch를 활용하면 더 정밀하고 편리하게 시간을 측정할 수 있습니다.

 

 

(1) 서비스 코드

@Service
public class TestService {
    private final long COUNT = 1_000_000_000;

    public void test() {
        for (int i = 0; i < COUNT; i++) {
            // 실행할 코드
        }
    }
}

 

(2) 테스트 코드 (SpringBootTest 활용)

@SpringBootTest
class StopwatchTestApplicationTests {

    @Autowired
    private TestService testService;

    @Test
    void stopWatchTest() {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start(); // 시간 측정 시작

        testService.test(); // 테스트할 메서드 실행

        stopWatch.stop(); // 시간 측정 종료

        System.out.println(stopWatch.prettyPrint()); // 실행 시간 출력
    }
}

 

  • StopWatch 클래스는 스프링 프레임워크에서 제공하는 유틸리티
  • start()와 stop()을 사용해 명확하게 실행 구간을 설정 가능
  • prettyPrint()를 이용하면 더 보기 쉬운 형식으로 실행 시간 출력 가능
  • 밀리초보다 더 정밀한 단위까지 측정 가능 (nanoTime 사용 가능)

 

결론

  • 빠르게 측정할 경우 → System.currentTimeMillis()
  • 정확한 측정 및 여러 구간을 측정할 경우 → StopWatch

 

728x90

'Java' 카테고리의 다른 글

[Java] Deque 구현  (1) 2025.02.04
[Java] Stack 구현하기  (1) 2025.02.01
[Java] SinglyLinkedList 구현  (1) 2025.01.27
[Java] 객체 null 체크 Objects.isNull(), obj == null  (1) 2025.01.25
[Java] 동등성 (equals(), hashCode())  (0) 2025.01.05