शुरू करेंमुफ़्त में शुरू करें

सर्च एल्गोरिदम की परफॉर्मेंस की तुलना

एक ई-कॉमर्स कंपनी में सॉफ्टवेयर डेवलपर के रूप में, आप प्रोडक्ट सर्च फ़ंक्शनैलिटी सुधारने के लिए अलग-अलग सर्च मेथड्स का मूल्यांकन कर रहे हैं। अब तक कंपनी का सर्च मैकेनिज़्म बहुत धीमा था, लेकिन आपने वह देरी पहले ही हटा दी है। अब आपका काम नए सर्च मेथड की पुराने वाले से तुलना करना है, ताकि आप साबित कर सकें कि यह आपके कैटलॉग सर्च फीचर के लिए अधिक प्रभावी है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Java में कोड ऑप्टिमाइज़ करना

पाठ्यक्रम देखें

अभ्यास निर्देश

  • नए सर्च मेथड linearSearch() का उपयोग करके लक्ष्य एलिमेंट ढूँढें.
  • फिर पुराने सर्च मेथड linearSearchWithDelay() का उपयोग करके लक्ष्य एलिमेंट ढूँढें.
  • सर्च मेथड्स के बीच सापेक्ष परफॉर्मेंस का अंतर निकालें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

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;
    }
}
कोड संपादित करें और चलाएँ