문제 설명
다음 클래스의 main 메소드에서는 별모양 문자(*)가 10,000개 이어진 문자열을 만들기 위해 두가지 방법을 사용합니다. 하나는 String
에 +
연산을 이용하고, 다른 하나는 StringBuffer
의 append()
를 이용하는데요. 똑같은 문자열을 만들어 내는데 걸리는 시간을 측정해서 마지막 줄에서 출력하고 있습니다.
제출을 눌러 실행 결과를 비교해 보세요. 똑같은 작업을 수행하는데 성능에서 수십배의 차이가 나는걸 확인할 수 있나요?
String 클래스의 +
연산을 하게 될 때에는 내부적으로 다음과 같은 코드가 실행됩니다.
// + 연산
String str3 = str1 + str2;
// 내부적으로 실행되는 코드
String str3 = new StringBuffer().append(str1).append(str2).toString();
두 경우 결과는 같지만 +
연산을 한 경우에는 반복문 안에서 내부적으로 String
객체를 만들냅니다. 매번 new
를 사용해서 연산을 해야하기 때문에 속도가 그만큼 느려지는 것이지요.
이러한 이유로 문자열을 반복문 안에서 더하는 것은 성능상 문제가 생길 수 있으니 반드시 피해야 합니다.
실행 결과
실행 중지
실행 결과가 여기에 표시됩니다.