참조 : 문자열 출력 : C # 형식 또는 연결?
이 코드를 고려하십시오.
약간 수정 된 코드 버전입니다.
- Console.WriteLine은 내가 측정하려고하는 것보다 약간 느리기 때문에 제거했습니다.
- 루프 전에 스톱워치를 쳐다보고 바로 중지합니다.이 방법으로 함수를 실행하는 데 26.4 틱이 걸리더라도 정밀도가 떨어지지 않습니다.
- 결과를 반복 횟수로 나누는 방식이 잘못되었습니다. 1000 밀리 초와 100 밀리 초가 있다면 어떻게되는지 확인하십시오. 두 경우 모두 1000000으로 나눈 후 0ms가됩니다.
Stopwatch s = new Stopwatch();
var p = new { FirstName = "Bill", LastName = "Gates" };
int n = 1000000;
long fElapsedMilliseconds = 0, fElapsedTicks = 0, cElapsedMilliseconds = 0, cElapsedTicks = 0;
string result;
s.Start();
for (var i = 0; i < n; i++)
result = (p.FirstName + " " + p.LastName);
s.Stop();
cElapsedMilliseconds = s.ElapsedMilliseconds;
cElapsedTicks = s.ElapsedTicks;
s.Reset();
s.Start();
for (var i = 0; i < n; i++)
result = string.Format("{0} {1}", p.FirstName, p.LastName);
s.Stop();
fElapsedMilliseconds = s.ElapsedMilliseconds;
fElapsedTicks = s.ElapsedTicks;
s.Reset();
Console.Clear();
Console.WriteLine(n.ToString()+" x result = string.Format(\"{0} {1}\", p.FirstName, p.LastName); took: " + (fElapsedMilliseconds) + "ms - " + (fElapsedTicks) + " ticks");
Console.WriteLine(n.ToString() + " x result = (p.FirstName + \" \" + p.LastName); took: " + (cElapsedMilliseconds) + "ms - " + (cElapsedTicks) + " ticks");
Thread.Sleep(4000);
그게 내 결과입니다.
1000000 x result = string.Format("{0} {1}", p.FirstName, p.LastName); took: 618ms - 2213706 ticks
1000000 x result = (p.FirstName + " " + p.LastName); took: 166ms - 595610 ticks