'StringBuilder'에 해당되는 글 1건
- 2009.02.27 String 과 StringBuilder의 차이점
String 과 StringBuilder의 차이점
출처:데브피아~~~~~~~
String 개체는 문자열을 빼거나 더할 때 새로운 String 개체를 생성합니다.
그러나 StringBuilder는 한번 생성되면 다시 생성되지 않습니다.
자체적으로 Buffer를 가지고 있기 때문에 문자열을 더하거나 뺄 때 이 Buffer를 이용
하기 때문이죠.
그래서 문자열의 연산이 많을 때는 StringBuilder를 이용하는 게 훨씬 효율적이라고
온라인 문서와 MSDN의 기사에 나와 있더군요.
저도 그렇게 믿고 10번 정도의 문자열 연산을 하는 것은 StringBuilder를 사용하도록
했습니다.
그런데 방금 테스트해본 결과 100번 정도의 작업은 String이 훨씬 빠르고 1200번 정
도 후에는 String이 기하급수적으로 느려지는 걸 발견했습니다.
하지만 베타 버전이라 느릴 수 있다는 생각이 드므로 일단은 StringBuilder를 이용해
계속 함수를 만들 생각입니다.
다음은 테스트하는 데 쓰인 소스입니다. Len 인수의 값을 작게 하면 할수록 String이
빠르고 많게 하면 할수록 StringBuilder가 빨라집니다.
public static void Main(string[] args)
{
long Start = 0;
long Duration = 0;
string s = "";
Start = System.DateTime.Now.Ticks;
s = StringBuilderTest(10000);
Duration = System.DateTime.Now.Ticks - Start;
Console.WriteLine("StringBuilder: " + Duration.ToString()); //200290, 300435
Start = System.DateTime.Now.Ticks;
s = StringTest(10000);
Duration = System.DateTime.Now.Ticks - Start;
Console.WriteLine("string: " + Duration.ToString()); //20629870, 21130590
Console.ReadLine();
}
public static string StringTest(int Len)
{
string s = "";
for (int i = 0; i < Len; i++)
{
s += i.ToString();
}
return s;
}
public static string StringBuilderTest(int Len)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < Len; i++)
{
sb.Append(i.ToString());
}
return sb.ToString();
}
'C# .NET' 카테고리의 다른 글
c#에서 override키워드의 의미 (0) | 2009.03.05 |
---|---|
주석을 달아주는 편리한 Visual Studio Addin. Comment Helper v1.0 정식 버젼 (VS2005/2008 Addin) (0) | 2009.03.04 |
Visual Studio 2008 이 삭제시 에러가 발생할 경우... (1) | 2009.02.25 |
C# 제네릭 (0) | 2009.02.23 |
갑자기 애매모호해서 정리쫌... (0) | 2009.02.19 |