Začněte nyníZačněte zdarma

Porovnání výkonu vyhledávacích algoritmů

Jako softwarový vývojář v e-commerce společnosti vyhodnocuješ různé metody vyhledávání, abys zlepšil funkci vyhledávání produktů. Dosavadní vyhledávací mechanismus byl velmi pomalý, ale to zpoždění se ti už podařilo odstranit. Tvým úkolem je teď porovnat novou metodu vyhledávání se starou a dokázat, že je pro vyhledávání v katalogu efektivnější.

Toto cvičení je součástí kurzu

Optimalizace kódu v Javě

Zobrazit kurz

Pokyny k cvičení

  • Najdi cílový prvek pomocí nové metody vyhledávání, linearSearch().
  • Poté najdi cílový prvek pomocí staré metody vyhledávání, linearSearchWithDelay().
  • Vypočítej relativní rozdíl ve výkonu obou metod vyhledávání.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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;
    }
}
Upravit a spustit kód