책/이펙티브자바
Item 63 : 문자열 연결은 느리니 주의하라
puzzling
2021. 8. 30. 01:38
- 이번 챕터는 String, StringBuilder, StringBuffer를 정리한 글과 함께 보면 좋다
https://puzzle-making.tistory.com/174
[Java] String, StringBuilder, StringBuffer 차이
String과 StringBuilder의 성능차이 위 사진 처럼 String을 계속해서 더해 400라인 정도의 쿼리를 만들었을때 733ms 의 실행시간이 걸렸고 StringBuilder를 사용해 똑같이 400라인의 쿼리를 만들었면 243ms의 실.
puzzle-making.tistory.com
- 문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 수단이다.
- 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다.
- String은 불변이기 때문에 새로 연결할 경우 새로운 객체를 만들게 된다.(중요)
//문자열 연결을 잘못한 예
public String statement() {
String result = "";
for (int i = 0; i < numItems(); i++) {
result += lineForItem(i); // 문자열 연결
}
return result;
}
// 개선 예시 - StringBuilder 사용
public String statement2() {
StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH);
for (int i = 0; i < numItems(); i++) {
b.append(lineForItem(i));
}
return b.toString();
}