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
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;
}
}