MulaiMulai sekarang secara gratis

Mengoptimalkan aplikasi analisis keuangan

Sebagai pengembang Java untuk aplikasi analisis keuangan, Anda mengidentifikasi bahwa salah satu metode pembuatan laporan menghasilkan sampah memori berlebihan dan memicu pengumpulan sampah yang sering. Laporan tersebut menggabungkan ribuan titik data menjadi satu string. Anda perlu merefaktor kode ini agar lebih ramah terhadap GC sambil mempertahankan fungsionalitas yang sama.

Latihan ini adalah bagian dari kursus

Optimasi Kode di Java

Lihat Kursus

Petunjuk latihan

  • Buat instance StringBuilder baru dengan panjang yang diperlukan.
  • Untuk setiap nilai dalam dataPoints, tambahkan nilai yang telah diformat ke dalam string builder.
  • Konversikan StringBuilder menjadi String dan kembalikan nilainya.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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");
    }
}
Edit dan Jalankan Kode