문제 설명

다음 클래스의 main 메소드에서는 별모양 문자(*)가 10,000개 이어진 문자열을 만들기 위해 두가지 방법을 사용합니다. 하나는 String+연산을 이용하고, 다른 하나는 StringBufferappend()를 이용하는데요. 똑같은 문자열을 만들어 내는데 걸리는 시간을 측정해서 마지막 줄에서 출력하고 있습니다.
제출을 눌러 실행 결과를 비교해 보세요. 똑같은 작업을 수행하는데 성능에서 수십배의 차이가 나는걸 확인할 수 있나요?


String 클래스의 +연산을 하게 될 때에는 내부적으로 다음과 같은 코드가 실행됩니다.

 // + 연산
String str3 = str1 + str2;     

 // 내부적으로 실행되는 코드
String str3 = new StringBuffer().append(str1).append(str2).toString();  

두 경우 결과는 같지만 +연산을 한 경우에는 반복문 안에서 내부적으로 String 객체를 만들냅니다. 매번 new를 사용해서 연산을 해야하기 때문에 속도가 그만큼 느려지는 것이지요.
이러한 이유로 문자열을 반복문 안에서 더하는 것은 성능상 문제가 생길 수 있으니 반드시 피해야 합니다.

실행 결과 실행 중지