[Effective Java]일반적인 프로그래밍 원칙들_6

828 단어 JavaJava

6. 문자열 연결 시 성능에 주의하라

  • n개의 문자열에 연결 연산자를 반복 적용해서 연결하는 데 드는 시간은, n^2에 비례

ex23) 청구서 예제 - 문자열을 연결하는 잘못된 방법

// 문자열을 연결하는 잘못된 방법 - 성능이 엉망이다 
public String statement() {
	String result = "";
    for (int i = 0; i < numItems(); i++)
        result += lineForItem(i); // String concatenation
    return result;
}
  • 항목 숫자 제곱에 비례하는 성능을 냄

만족스런 성능을 얻으려면 String 대신 StringBuilder를 써서 청구서를 저장

ex24) 청구서 예제 - StringBuilder 사용

public String statement() {
    StringBuilder b = new StringBuilder(numITems() * LINE_WIDTH);
    for (int i = 0; i < numItems(); i++)
        b.append(lineForItem(i));
    return b.toString();
}
  • append 메서드를 사용하면 항목 숫자에 비례하는 성능을 냄

좋은 웹페이지 즐겨찾기