ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 문자열 합치기, 아직도 + 연산자만 쓰시나요? (String vs StringBuilder)
    개발/C# 2026. 1. 13. 10:32
    반응형

    C# 개발자라면 매일 마주치는 문자열(String) 처리 이야기를 해보려고 합니다. 보통 "문자열 합칠 땐 StringBuilder를 써라"는 말을 많이 듣지만, 사실 무조건은 아닙니다.

    상황에 따라 무엇을 쓰는 게 최선인지, 제가 실무에서 느낀 점들을 섞어서 깔끔하게 정리해 드릴게용..

     

     

    1. 왜 String은 합칠수록 느려질까요?

    C#에서 string은 '불변(Immutable)' 객체입니다. 한 번 메모리에 올라가면 내용을 바꿀 수 없다는 뜻이죠.

    우리가 str += "추가"라고 쓰는 순간, 기존 문자열에 글자가 붙는 게 아니라 새로운 메모리 공간을 할당받아 "기존 내용 + 추가 내용"을 새로 씁니다.

    이걸 반복문 안에서 수만 번 하면 어떻게 될까요? 컴퓨터는 계속 새 종이를 꺼내서 다시 쓰고, 이전 종이는 쓰레기통에 버리는 작업을 반복합니다. 당연히 **메모리 낭비와 성능 저하(GC 부하)**로 이어지죠

     

     

    2. 그래서 등장한 구원투수, 'StringBuilder'

    반면 StringBuilder는 '가변(Mutable)' 객체입니다. 쉽게 말해 화이트보드 같아요.

    새 종이를 꺼낼 필요 없이, 하나의 버퍼(공간) 안에서 글자를 덧붙이고 수정합니다. 메모리를 미리 넉넉하게 잡아두고 그 안에서 다 해결하니까 대량의 문자열을 합칠 때 압도적으로 빠릅니다.

     

     

     

    3. 실제 코드로 보는 성능 차이

    [위험한 코드: 반복문 내 + 연산]

    string result = "";
    for (int i = 0; i < 10000; i++)
    {
        result += i.ToString(); // 매번 새로운 객체 생성 (느림)
    }

     

    [권장 코드: 대량 작업 시 StringBuilder]

    using System.Text;
    
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 10000; i++)
    {
        sb.Append(i.ToString()); // 동일 객체 내에서 작업 (빠름)
    }
    string finalResult = sb.ToString();

     

     

     

    4. 잠깐! "무조건 StringBuilder"가 정답은 아닙니다

    여기서 중요한 포인트가 있습니다. 상황에 따라서는 그냥 +나 **문자열 보간($"")**을 쓰는 게 더 나을 때도 많거든요.

    • 합칠 문자열이 몇 개 안 될 때 (2~4개): StringBuilder 객체를 생성하는 비용(오버헤드)이 더 클 수 있습니다. 이때는 그냥 +나 $"{name}님" 형식이 훨씬 가독성도 좋고 속도도 충분합니다.
    • 컴파일 타임에 결정되는 문자열: "A" + "B" + "C" 같은 코드는 컴파일러가 알아서 "ABC"로 합쳐주기 때문에 우리가 신경 쓸 필요가 없습니다.
    • 가독성이 최우선일 때: 코드는 나만 보는 게 아니죠. 성능 차이가 미미한 곳에서는 가독성이 좋은 방식을 선택하는 게 실력입니다.

      가독성이 중요할 때
    // 이게 훨씬 보기 편하죠?
    string profile = name + "님, 안녕하세요! 점수는 " + score + "점입니다.";
    
    // 가독성이 떨어질 수 있습니다.
    StringBuilder sb = new StringBuilder();
    sb.Append(name);
    sb.Append("님, 안녕하세요! 점수는 ");
    sb.Append(score);
    sb.Append("점입니다.");

     

     

     

     

    결국 **"상황에 맞는 도구를 골라 쓰는 것"**이 진짜 실력입니다. 무조건 한 방식만 고집하기보다, 데이터의 양과 가독성을 고려해서 현명하게 선택해 보세요!

    오늘 포스팅이 도움 되셨다면 공감과 댓글 부탁드립니다. 궁금한 점은 언제든 남겨주세요!

    반응형
Designed by Tistory.