본문 바로가기
[ Program ]/C#

StringBuilder 클래스

by 관이119 2012. 9. 18.
출처 SYSCLUB | 곰돌이
원문 http://blog.naver.com/koreaotn/10015248300

 

Method 설명
Append() 현재 문자열 뒤에 새로운 문자열을 추가 합니다.
Insert() 현재 문자열 사이에 문자열을 추가 합니다.
Remove() 문자를 현재 문자열에서 삭제 합니다.
Replace() 문자열에서 특정 문자/문자열을 찾아 교체 합니다.
ToString()

문자열의 내용을 System.String 객체로 형 변환.

 

 

 

 

 

 

 

 

 

[String 클래스와 StringBuilder 클래스의 성능차이-예제]

1. String 클래스 사용

using System;

class Class1
{
static void Main(string[] args)
{
long start = DateTime.Now.Ticks; //시작 시간 가져오기
System.String str = null; //str 문자열 선언

for (int i = 0; i < 20000; i++) //"안녕하세요"를 20000번 더함
{
str += "안녕하세요";
}

str = str.Replace('안', '만'); //문자열에서 '안'자를 찾아 '만'자로 교체
str = str.Remove(30, str.Length - 30); //앞에 30자만 남기고 제거

long end = DateTime.Now.Ticks;

Console.WriteLine("str 크기: {0}", str.Length); //문자열 길이 출력
Console.WriteLine("str 내용: {0}", str); //문자열 내용 출력
Console.WriteLine("소요시간: {0}", end - start); //소요시간 출력
Console.ReadLine();
}
}

2. StringBuilder 클래스 사용

using System;

class Class2
{
static void Main(string[] args)
{
long start = DateTime.Now.Ticks; //시작 시간 가져오기

// str 문자열 선언
System.Text.StringBuilder str = new System.Text.StringBuilder();

for (int i = 0; i < 20000; i++) //"안녕하세요"를 20000번 더함
{
str.Append("안녕하세요");
}

str.Replace('안', '만'); //문자열에서 '안'자를 찾아 '만'자로 교체
str.Remove(30, str.Length - 30); //앞에 30자만 남기고 제거

long end = DateTime.Now.Ticks; //종료시간 가져오기

Console.WriteLine("str 크기: {0}", str.Length); //문자열 길이 출력
Console.WriteLine("str 내용: {0}", str); //문자열 내용 출력
Console.WriteLine("소요시간: {0}", end - start); //소요시간 출력
Console.ReadLine();
}
}

[설명]

String 개체는 일단 생성되면 절대 그 크기가 변경되지 않습니다.

String 개체는 고정된 문자열만 저장 가능합니다.

따라서 String 개체를 사용해 큰 문자열을 다루거나 자주 변경되는 문자열을 다룰 경우 비효율적입니다.

 

System.Text.StringBuilder 클래스는 대용량 문자열을 처리하거나

자주 변경되는 문자열을 효율적으로 처리하기 위해 만들어진 객체입니다.

 

String 클래스를 사용할 경우 소요시간 46875000과 7512KB의 메모리를 사용합니다.

그러나 동일한 기능을 StringBuilder 클래스로 구현할 경우 소요시간 0과 5260KB의 메모리만 사용합니다.

 

[참고문헌] 최재규, 영진닷컴, Visual C# .NET 2005 실전프로젝트 2nd

댓글