Skip to content

Item 63. 문자열 연결은 느리니 주의하라 #66

Description

@pyeong114

Chapter : 9. 일반적인 프로그래밍 원칙

Item : 63. 문자열 연결은 느리니 주의하라

Assignee : pyeong114


🍑 서론

🍑 본론

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

한 줄짜리 출력값 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때라면 괜찮지만, 본격적으로 사용하기 시작하면 성능 저하를 감내하기 어렵다

문자열 연결 연산자로 문자열 n개를 잇는 시간은 n 제곱에 비례한다.

문자열은 불변이라서 두 문자열을 연결할 경우 양쪽의 내용을 모두 복사해야 하므로 성능 저하는 피할 수 없는 결과다.

public String statement(){
    String result = "";
    for(int i = 0; i < numItems(); i++)
        result += lineForItem(i); // 문자열 연결
    return result;
}

품목이 많으면 심각하게 느려질 수 있다.
성능을 포기하고 싶지 않다면 String 대신 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();
}

🍑 결론

성능에 신경 써야 한다면 많은 문자열을 연결할 때는 문자열 연결 연산자(+)를 피해라
대신 StringBuilder의 append 메서드를 사용하라


Referenced by

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions