2005. 8. 3. 22:22
1. .NET string 성능테스트 1
2. .NET string 성능테스트 2 문자열 합치기
테스트 소스 1-1
long a = (long)System.DateTime.Now.Ticks;
string tmp = "";
for(int tmpi=0;tmpi<1000;tmpi++)
{
tmp = tmp + "aaaa";
}
long b = (long)System.DateTime.Now.Ticks;
Response.Write((b-a).ToString());
테스트 소스 1-2
long c = (long)System.DateTime.Now.Ticks;
string tmb = "";
for(int tmbi=0;tmbi<1000;tmbi++)
{
tmb = string.Format("{0}{1}", tmb , "aaaa");
}
long d = (long)System.DateTime.Now.Ticks;
Response.Write((d-c).ToString());
결과 1
테스트 소스 2-1
long c = (long)System.DateTime.Now.Ticks;
string tmb = "";
for(int tmbi=0;tmbi<1000000;tmbi++)
{
tmb = string.Format(@"{0}{1}", "aaaa", "aaaa");
}
long d = (long)System.DateTime.Now.Ticks;
Response.Write((d-c).ToString());
테스트 소스 2-2
long a = (long)System.DateTime.Now.Ticks;
string tmp = "";
for(int tmpi=0;tmpi<1000000;tmpi++)
{
tmp = "aaaa" + "aaaa";
}
long b = (long)System.DateTime.Now.Ticks;
Response.Write((b-a).ToString());
결과 2
테스트 소스 3-1
long a = (long)System.DateTime.Now.Ticks;
string tmp = "";
for(int tmpi=0;tmpi<1000;tmpi++)
{
tmp = tmp + "aaaa" + "aaaa";
}
long b = (long)System.DateTime.Now.Ticks;
Response.Write((b-a).ToString());
테스트 소스 3-2
long c = (long)System.DateTime.Now.Ticks;
string tmb = "";
for(int tmbi=0;tmbi<1000;tmbi++)
{
tmb = string.Format("{0}{1}{2}", tmb, "aaaa", "aaaa");
}
long d = (long)System.DateTime.Now.Ticks;
Response.Write((d-c).ToString());
테스트 소스 3-3
long e = (long)System.DateTime.Now.Ticks;
string tmc = "";
for(int tmpi=0;tmpi<1000;tmpi++)
{
tmc = (tmc + "aaaa" + "aaaa");
}
long f = (long)System.DateTime.Now.Ticks;
Response.Write((f-e).ToString());
테스트 소스 3-4
long g = (long)System.DateTime.Now.Ticks;
string tmpd = "";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for(int tmpi=0;tmpi<1000;tmpi++)
{
sb.Append("aaaa");
}
long h = (long)System.DateTime.Now.Ticks;
Response.Write((h-g).ToString());
테스트 결과 3
성능 테스트의 주요 관점은 긴 문자열의 결합에 대한 부분이었습니다.
우선
StringBuilder가 속도 면에서는 타의 추종을 불허 할 정도의 성능을 보여주는 것을 볼 수 있습니다.
그러나 StringBuilder는 메모리를 미리 잡아 놓고 돌리는 것이라 정말 큰 문자열의 결합을 많이 사용한다면 충분한 메모리를 확보해야 할 것으로 예상됩니다.
(대용량의 서비스 등) 단순한 문자열의 연결을 위해서라면 StringBuilder 를 추천합니다.^^
좀더 자세한 내용이나 관련 글들은 기회가 되면 다시 올리도록 하겠습니다.