string타입은 불변 객체이기 때문에 string에 대한 모든 변환은 새로운 메모리 할당을 발생시킨다.
불변 타입의 string클래스가 발생시키는 가장 큰 문제는 문자열을 더할 때다.
끊임없이 힙에 메모리를 할당하고 이전의 문자열을 다시 복사하는 과정을 거쳐 시간이 오래 걸린다.
string txt = "Hello";
for(int i=0; i<300000; i++)
{
// 새로운 메모리에 Hello1~~~111을 작성
txt = txt + "1";
}
string txt = "Hello";
StringBuilder sb = new StringBuilder();
sb.Append(txt);
for(int i=0; i<300000; i++)
{
// Append 메서드에 들어온 인자를 미리 할당한 메모리에 복사한다.
sb.Append("1");
}
// ToString(); 으로 string 변환을 해줘야함.
string newText = sb.ToString();
잦은 메모리 할당과 복사가 없어졌기 때문에 그만큼 성능이 향상된다.
문자열을 연결하는 작업이 많을 때는 반드시 StringBuilder를 사용하는것을 권장한다.