ÎncepețiÎncepe gratuit

Compararea performanței algoritmilor de căutare

În calitate de dezvoltator software la o companie de e-commerce, evaluezi diferite metode de căutare pentru a îmbunătăți funcționalitatea de căutare a produselor. Până acum, mecanismul de căutare folosit de companie era foarte lent, însă ai reușit deja să elimini acea întârziere. Sarcina ta acum este să compari noua metodă de căutare cu cea veche, pentru a demonstra că este mai eficientă pentru funcția de căutare în catalog.

Acest exercițiu face parte din cursul

Optimizarea codului în Java

Vezi cursul

Instrucțiuni pentru exercițiu

  • Găsește elementul țintă folosind noua metodă de căutare, linearSearch().
  • Apoi, găsește elementul țintă folosind metoda veche de căutare, linearSearchWithDelay().
  • Calculează diferența de performanță relativă dintre cele două metode de căutare.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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;
    }
}
Editează și rulează codul