문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 편리한 수단이다. 하지만 한줄짜리 출력값 정도는 괜찮지만, 본격적으로 사용할 경우 성능저하가 일어난다. 문자열 n개를 잇는 시간은 n2에 비례한다 문자열은 불변이라서 두 문자열을 연결할 경우 양쪽의 내용 모두 복사해야 하므로 성능 저하를 피할 수 없다.
public String statement() {
String result = “”;
for (int i = 0; i < numItems(); i ++)
result += lineForItem(i); // 문자열 연결
return result;
}
성능을 위해서는 String 대신 StringBuilder를 사용하자
public String statement2() {
StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH);
for (int i = 0; i < numItems();
b.append(lineForItem(i));
return b.toString();
}
이는 품목의 수(루프하는 횟수)를 100개로 하고 실행했을 경우 위의 코드보다 6.5배 정도 빠른 속도를 낸다. 품목수가 늘어나면 늘어날수록 성능 격차도 점점 심해진다.
성능에 신경써야한다면 문자열 연산자를 피하고 StringBuilder를 사용하자