시작하기무료로 시작하기

재무 분석 애플리케이션 최적화

재무 분석 애플리케이션의 Java 개발자로서, 보고서 생성 메서드 중 하나가 불필요한 객체를 과도하게 만들고 잦은 가비지 컬렉션을 유발한다는 점을 확인했어요. 이 보고서는 수천 개의 데이터 포인트를 하나의 문자열로 연결합니다. 동일한 기능을 유지하면서도 GC에 더 친화적이도록 코드를 리팩터링해야 합니다.

이 연습은 강의의 일부입니다

Java 코드 최적화

강의 보기

연습 안내

  • 필요한 길이로 새로운 StringBuilder 인스턴스를 생성하세요.
  • dataPoints의 모든 값에 대해, 포맷한 값을 StringBuilder에 추가하세요.
  • StringBuilderString으로 변환해 반환하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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");
    }
}
코드 편집 및 실행