Arama algoritması performansını karşılaştırma
Bir e-ticaret şirketinde yazılım geliştirici olarak, ürün arama işlevini iyileştirmek için farklı arama yöntemlerini değerlendiriyorsun. Şimdiye kadar şirketin kullandığı arama mekanizması çok yavaştı, ama bu gecikmeyi kaldırmayı başardın. Şimdiki görevin, katalog arama özelliğin için yeni arama yöntemini eskisiyle karşılaştırıp daha verimli olduğunu kanıtlamak.
Bu egzersiz, kursun bir parçasıdır
Java'da Kod Optimizasyonu
Egzersiz talimatları
- Yeni arama yöntemi olan
linearSearch()ile hedef öğeyi bul. - Ardından eski arama yöntemi
linearSearchWithDelay()ile hedef öğeyi bul. - Arama yöntemlerinin göreli performans farkını hesapla.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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;
}
}