[C#] String Builder란?

2022. 6. 1. 13:49C#/프로그래밍

StringBuilder 클래스를 사용하면 루프에서 많은 문자열을 연결할 때

성능이 향상될 수 있습니다.

 

성능이 향상되는 이유

 

string과 string builder 둘 다 문자 시퀀스를 나타내지만,

string은 변경할 수 없는 형식이고, string builder는 변경이 가능한 형식이다.

즉, string 개체를 수정하는 작업은

사실 다른 값과 주소를 가진 새 개체를 반환하는 작업이다.

 또한, string은 참조형식이기도 하다.

참조형식이란, 인스턴스가 생성 되면 데이터가 위치한 주소만을 갖고 있고,

실제 데이터는 힙 영역이라는 분리된 공간에 저장되는 형식을 말한다.

따라서 string 개체를 추가한다는 것은

가비지 컬렉터가 관리하는 영역에

가비지가 더 많이 생성된다는 것이고,

이는 가비지 컬렉터가 더 많이 일한다는 것을 의미한다.

그리고, 가비지 컬렉터가 많이 일한다는 것은 아래의 단점으로 인해

이슈가 발생할 가능성을 내포한다.

그래서, string 개체가 추가되는 것을 방지하기 위한 대안으로

변경 가능한 문자열 클래스인 StringBuilder 를 사용하는 것이다.

여기서 말하는 가변성은 클래스의 인스턴스가 만들어지면문자를 추가, 제거, 바꾸기 또는 삽입하여 수정할 수 있음을 의미한다.

 

 

https://docs.microsoft.com/ko-kr/dotnet/standard/base-types/stringbuilder

 

.NET에서 StringBuilder 클래스 사용

.NET에서 StringBuilder 클래스를 사용하는 방법을 알아봅니다. 이 클래스를 사용하면 새 개체를 만들지 않고 문자열을 수정합니다.

docs.microsoft.com

https://docs.microsoft.com/ko-kr/dotnet/api/system.text.stringbuilder?view=net-6.0#----- 

 

StringBuilder 클래스 (System.Text)

변경할 수 있는 문자열을 나타냅니다. 이 클래스는 상속될 수 없습니다.

docs.microsoft.com

 

'C# > 프로그래밍' 카테고리의 다른 글

[C#] Static을 알아보자  (0) 2022.09.30
편식소녀 뜯어보기 - Player,  (0) 2022.06.18
[C#] 필드란?  (0) 2022.05.30
[C#] 물음표의 의미  (0) 2022.05.30
[C#] Stream 이란?  (0) 2022.05.30