Item 63 : 문자열 연결은 느리니 주의하라
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();
}
'책 > 이펙티브자바' 카테고리의 다른 글
Item 65 : 리플렉션보다는 인터페이스를 사용하라 (0) | 2021.09.01 |
---|---|
Item 64 : 객체는 인터페이스를 사용해 참조하라 (0) | 2021.08.31 |
Item 62 : 다른 타입이 적절하다면 문자열 사용을 피하라 (0) | 2021.08.29 |
Item 61 : 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2021.08.29 |
Item 60 : 정확한 답이 필요하다면 float와 double은 피하라 (0) | 2021.08.27 |