ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • string 과 Stringbuilder의 차이점을 Araboja
    Language/C# 2020. 9. 5. 23:46

    c#에서 string과 Stringbuilder의 차이점을 아시나요?

     

    대부분 아래와 같이 여러 문자열을 조합해서 사용 하실것으로 예상됩니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    string sHTML = string.Empty;
     
    sHTML = "<HTML>"
           + "<body>"
           + "   <div>"
           + "      <span>string vs Stringbuilder</span>"
           + "   </div>"
           + "</body>"
           + "</HTML>";
     
    Console.Write(sHTML);
     
    cs

    위의 예제를 보시면, HTML 태그를 작성하기 위하여, 총 7 개의 문자열을 조합하고 있습니다.

    아래는 StringBulder를 통하여 작성한 예제 코드입니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    using System.Text;
     
     
    StringBuilder sbHTML = new StringBuilder(1000);
     
    sbHTML.Append("<HTML>");
    sbHTML.Append("<body>");
    sbHTML.Append("   <div>");
    sbHTML.AppendFormat("      <span>{0}</span>","string vs Stringbuilder");
    sbHTML.Append("   </div>");
    sbHTML.Append("</body>");
    sbHTML.Append("</HTML>";
     
    Console.Write(sbHTML.ToString());
     
    cs

    두 예제는, 동일한 결과물이 출력될 것을으로 예상됩니다.

    성능 적인 측면으로는 string과 StringBuilder중에 어떤것이 좋다고 할 수 있을까요?

    string의 경우imutable(불변성)이기 때문에, 변수를 선언할 경우 그 값이 바뀌지 않습니다.

    그렇기 때문에, 여러 문자열을 조합 할때 새로운 string 객체를 생성해 내게 됩니다.
    (예를들어, A 와 B를 더할때 AB 값을 가지는 C객체가 생성됩니다.)

    작은 문자열 조합일 경우, 성능상 크게 차이가 나지 않을 수 있으나 복잡한 문자열을 더할 경우 불필요한 객체생성이 일어나 메모리 적인 측면과 성능 적인 측면에서 좋지 못한 코드가 되어 버립니다.

    반면 StringBuilder의 경우, 최초 생성자 호출 시 크기를 지정 할 수 있으며 지정된 크기 안에서는 자유롭게 문자열을 조합하여도 불필요한 객체 생성이 일어나지 않습니다.

    문자열 조합시에는 StringBuilder를 사용하는 습관을 들이는것이 좋습니다.

    'Language > C#' 카테고리의 다른 글

    C# 버젼 연혁  (0) 2020.10.10
    [C#] Boxing / Unboxing에 대하여 Araboza.  (0) 2020.09.19
    C#으로 개발된 Com dll 등록 방법  (0) 2020.06.20
    SAP RFC 연동 (C#)  (0) 2019.10.06

    댓글

2017 TIFY Team All Rights Reserved.