더북(TheBook)

언뜻 보면 result라는 문자열이 있고 실행하는 동안 동일한 문자열을 수정하는 것처럼 보일 수 있지만 사실은 그렇지 않다. result에 새로운 값을 할당할 때마다 메모리에 새로운 문자열을 만든다. .NET은 새 문자열의 길이를 결정하고, 이에 따라 새 메모리를 할당하고, 다른 문자열에 있는 내용을 새로 만든 메모리에 복사하여 이를 반환한다. 이는 꽤 연산량이 많은 작업이며, 가비지 컬렉션할 문자열과 그 흔적이 길어질수록 비용이 증가한다.

이러한 문제를 해결할 수 있는 무료 프레임워크 도구가 있다. 성능에 크게 신경 쓰지 않는 사람이라고 해도, 더 나은 성능을 얻기 위해 로직을 바꾸거나 특별한 기술을 도입할 필요가 없는 도구이므로 한번 사용해 봐도 좋을 것이다. 이러한 도구 중 하나가 StringBuilder이다. 이를 이용하면 ToString 함수를 호출하여 최종 문자열을 한 번에 만들 수 있다.

public static string JoinNames(string[] names) {
    var builder = new StringBuilder();
    int lastIndex = names.Length - 1;
    for (int i = 0; i < lastIndex; i++) {
        builder.Append(names[i]);
        builder.Append(", ");
    }
    builder.Append(names[lastIndex]);
    return builder.ToString();
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.