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

एक फाइनेंशियल एनालिसिस एप्लिकेशन का अनुकूलन

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

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

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

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

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

  • आवश्यक लंबाई का नया StringBuilder इंस्टेंस बनाएँ.
  • dataPoints के हर वैल्यू के लिए, फॉर्मैट किया गया वैल्यू स्ट्रिंग बिल्डर में जोड़ें.
  • StringBuilder को String में कन्वर्ट करें और उसे रिटर्न करें.

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

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

public class Main {
    public static String generateReportWithoutOptimization(double[] dataPoints) {
        String report = "";
        for (double value : dataPoints) {
            report += String.format("%.2f, ", value);
        }
        return report;
    }
    
    public static String generateReportWithOptimization(double[] dataPoints) {
        // Create a new string builder
        StringBuilder report = new  ____(dataPoints.length * 8);
        for (double value : dataPoints) {
            // For every value, add the formatted value to the string builder 
            report.____(String.format("%.2f, ", value));
        }
        // Convert to string before returning
        return report.____();
    }
    
    public static void main(String[] args) {
        double[] testData = new double[10000];
        for (int i = 0; i < testData.length; i++) {
            testData[i] = Math.random() * 100;
        }
        
        long startWithoutOptimization = System.nanoTime();
        String reportWithoutOptimization = generateReportWithoutOptimization(testData);
        long endWithoutOptimization = System.nanoTime();
        
        long startWithOptimization = System.nanoTime();
        String reportWithOptimization = generateReportWithOptimization(testData);
        long endWithOptimization = System.nanoTime();
        
        System.out.println("Time taken without optimization: " + (endWithoutOptimization - startWithoutOptimization) / 1_000_000 + " ms");
        System.out.println("Time taken with optimization: " + (endWithOptimization - startWithOptimization) / 1_000_000 + " ms");
    }
}
कोड संपादित करें और चलाएँ