본문 바로가기
잡담/궁금증 해결

시간 측정 테스트시 주의할 점

by lms0806 2024. 9. 2.
728x90
반응형
public static void main(String[] args) {
        // Test data
        int n = 100000; // Example value for n
        int[] sArray = {200, 400, 800}; // Example array of station locations
        int w = 100; // Example value for w
        // Measure time for the first solution
        long startTime1 = System.nanoTime();
        int result1 = solution1(n, sArray, w);
        long endTime1 = System.nanoTime();
        long duration1 = endTime1 - startTime1;
        System.out.println("Execution time for solution1: " + duration1 + " nanoseconds");
        // Measure time for the second solution
        System.out.println("--------------------------------------------------------");
        long startTime2 = System.nanoTime();
        int result2 = solution2(n, sArray, w);
        long endTime2 = System.nanoTime();
        long duration2 = endTime2 - startTime2;
        System.out.println("Execution time for solution2: " + duration2 + " nanoseconds");
    }

 

solution1과 solution2는 같은 코드이다.

다음과 같이 분명히 같은 코드를 작성하여서 테스트하는데 시간측정 결과가 차이가 나는 경우가 발생한다.

Execution time for solution1: 335900 nanoseconds
Execution time for solution2: 15400 nanoseconds

왜 이러는지 확인해본 결과, 캐시 때문에 다음과 같이 발생하는 것으로 확인되었다.

단순히 함수로 테스트를 진행하지 말고 컴파일부터 서로 작동하게 하여 테스트 하는 방법이 좀 더 정확하게 테스트할 수 있을거 같다.

 

결론

같은 테스트 코드라도, 각자 다른 함수로 구현하여도, 서로 다르게 실행하여 테스트를 진행해야 함

 

728x90
반응형

댓글