ITEM 63: 문자열 연결은 느리니 주의해라
문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다. 문자열은 불변이며, 두 문자열을 연결할 경우 양쪽의 내용을 모두 복사해야하므로 성능 저하는 피할 수 없다.
public String statement() {
String result = "";
for (int i = 0; i < numItems(); i++){
result += lineForItem(i);
}
return result;
}
위와 같이 구현할 경우 대상이 많아질수록 더 느려질 수 있다. String
대신 StringBuilder
를 사용하면 성능 저하를 피할 수 있다.
public String statement() {
StringBuilder sb = new StringBuilder(numItems() * LINE_WIDTH);
for (int i = 0; i < numItems(); i++){
b.append(lineForItem(i));
}
return b.toString();
}
즉, 많은 문자열을 연결할 떄는 문자열 연결 연산자 +
대신 StringBuilder
를 사용해야 한다.
Last updated
Was this helpful?