시작하기무료로 시작하기

검색 알고리즘 성능 비교

전자상거래 회사의 소프트웨어 개발자로서, 상품 검색 기능을 개선하기 위해 여러 검색 방식을 평가하고 있어요. 지금까지 회사가 사용하던 검색 메커니즘은 매우 느렸지만, 이미 그 지연을 제거하셨습니다. 이제 새 검색 방식이 카탈로그 검색 기능에서 더 효율적임을 입증하기 위해, 이전 방식과 새 방식을 비교해 보세요.

이 연습은 강의의 일부입니다

Java 코드 최적화

강의 보기

연습 안내

  • 새로운 검색 방식 linearSearch()를 사용해 대상 요소를 찾으세요.
  • 그다음, 이전 검색 방식 linearSearchWithDelay()를 사용해 대상 요소를 찾으세요.
  • 두 검색 방식의 상대적 성능 차이를 계산하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

public class SearchPerformanceTest {
    public static void main(String[] args) {
        int[] array = new int[10000];
        for (int i = 0; i < array.length; i++) {
            array[i] = i;
        }
        
        int target = array[7500]; // Target value to search for

        long startRegular = System.nanoTime();
        // Do a search using the new search method
        boolean foundRegular = ____(array, target);
        long endRegular = System.nanoTime();

        long startDelay = System.nanoTime();
        // Do a search using the old search method
        boolean foundDelay = ____(array, target);
        long endDelay = System.nanoTime();
        
        // Calculate the ratio between the old and new methods
        double ratio = (double)(endDelay - startDelay) / (____ - ____);
        
        System.out.println("Linear search with delay is " + ratio + 
                           " times slower than regular linear search");
    }
    
    private static boolean linearSearch(int[] data, int target) {
        for (int i = 0; i < data.length; i++) {
            if (data[i] == target) return true;
        }
        return false;
    }
    
    private static boolean linearSearchWithDelay(int[] data, int target) {
        for (int i = 0; i < data.length; i++) {
            try {
                Thread.sleep(0, 1000); // 1000 nanoseconds delay
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (data[i] == target) return true;
        }
        return false;
    }
}
코드 편집 및 실행