LoslegenKostenlos loslegen

Suchalgorithmus-Performance vergleichen

Als Softwareentwickler bei einem E‑Commerce-Unternehmen bewertest du verschiedene Suchmethoden, um die Produktsuche zu verbessern. Bisher war der eingesetzte Suchmechanismus sehr langsam, aber du konntest diese Verzögerung bereits entfernen. Deine Aufgabe ist nun, deine neue Suchmethode mit der alten zu vergleichen, um nachzuweisen, dass sie für die Katalogsuche effizienter ist.

Diese Übung ist Teil des Kurses

Codeoptimierung in Java

Kurs anzeigen

Anleitung zur Übung

  • Finde das Zielelement mit der neuen Suchmethode linearSearch().
  • Finde anschließend das Zielelement mit der alten Suchmethode linearSearchWithDelay().
  • Berechne den relativen Performance-Unterschied der Suchmethoden.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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;
    }
}
Code bearbeiten und ausführen