2022. 6. 1. 13:49ㆍC#/프로그래밍
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 |