IT/Programming / / 2023. 4. 26. 13:36

<Effective Java> RULE 51 문자열 연결 시 성능에 주의하라

반응형

 

문자열 연결할 때 연산자 '+' 는 여러 문자열을 하나로 합하는 편리한 수단이다.

하지만 한 줄 정도를 출력할 때나, 몇 개 정도의 객체를 뭄자열로 변환해서 연결할때는 좋지만,,,,

연결할 것이 많으면 성능에 문제가 생긴다.

 

n개의 문자열에 연결 연산자를 반복 적용해서 연결하는 데 드는 시간은 n^2에 비례한다. 문자열이 변경 불가능하기 때문이다.

문자열 두 개를 연결할 때, 그 두 문자열의 내용은 전부 복사된다.

 

개선 전

//문자열을 연결하는 잘못된 방법 - 성능 악영향
public String statements(){
    String result = "";
    for(int i = 0 l i < numItems() ; i++){
        result += lineForItem(i); // String concatenation
    }
    return result;
}
 

 

개선 후

public String statement(){
    StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH);
    for(int i = 0 ; i < numItems() ; i++){
        b.append(lineForItem(i));
    return b.toString();
}
 

위의 두 메서드의 차이

· 첫 메서드는 항목 숫자 제곱에 비례하는성능

· 두 번째 메서드는 항목 숫자에 비례하는 성능

 

결론

· 성능이 걱정된다면 많은 문자열을 연결할 때 + 연산자 사용은 피하라.

· StringBuilder의 append메서드를 사용하라.

· 문자 배열(char array)를 사용하거나, 문자열을 연결하는 대신 순차적으로 처리하는 방법을 쓸 수 있다.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유