Jämföra prestanda för sökalgoritmer
Du arbetar som mjukvaruutvecklare på ett e-handelsföretag och utvärderar olika sökmetoder för att förbättra produktsökningsfunktionen. Den sökmekanism som företaget använde tidigare var väldigt långsam, men du har redan lyckats ta bort den fördröjningen. Nu ska du jämföra din nya sökmetod med den gamla, för att visa att den är mer effektiv för katalogsökningen.
Den här övningen är en del av kursen
Optimera kod i Java
Övningsinstruktioner
- Hitta målelementet med den nya sökmetoden,
linearSearch(). - Hitta sedan målelementet med den gamla sökmetoden,
linearSearchWithDelay(). - Beräkna den relativa prestandaskillnaden mellan sökmetoderna.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;
}
}