정수 문자열에 하나의 문자열 또는 단일 char을 추가 할 때 성능에 영향이 있는지 궁금했습니다. (.NET 4) 당신이 루프를 언급해야문자열과 문자를 조합하는 성능
static class Program
{
const string STR = "string ";
static void Main()
{
var arr = new string[99999999];
Stopwatch timer = new Stopwatch();
Console.ReadLine();
timer.Start();
//for (uint i = 0; i < 99999999; i++)
//{
// arr[i] = STR + 'C';
//}
for (uint i = 0; i < 99999999; i++)
{
arr[i] = STR + "C";
}
timer.Stop();
Console.WriteLine(timer.ElapsedMilliseconds);
Console.ReadLine();
}
}
:
그래서 나는 작은 콘솔 응용 프로그램을 썼다.따라서 STR + "C"
에는 약 1300 밀리 초가 걸립니다.
STR + 'C'
에 대해서는 아직 결과를 확인할 수 없습니다. 너무 오래 걸리고 내 컴퓨터를 꽤 괴롭히는 것 같습니다.
내 질문은. 이 성능 영향은 어떻게 가능합니까? 실용적인 용도로는 99999999 값의 배열이 매우 자주 발생하지 않을 것이지만 여전히 큰 차이가 있습니다. 사전에
감사합니다!
대단히 감사합니다, 대단한 답변입니다! 상수가없는 'STR +'C ''는 문자를 추가하는 것보다 거의 두 배 빠릅니다. 그래서 지금은 단일 chararacter 문자열을 사용합니다. 다시 한 번 감사드립니다! – Andy
@Andy 기꺼이 도와 드리겠습니다. 'char'를'string'으로 먼저 변환하지 않고'string'을 직접 연결할 수 있기 때문에 여러분의 관찰은 의미가 있습니다. – dlev
@Andy Tigran의 대답과 결합하면 의미가 있습니다 :'+'연산자는 C# 컴파일러로 대체되어'String.Concat'을 호출합니다. 문자열과 함께 사용하면 문자열 매개 변수를 허용하는 오버로드를 직접 호출 할 수 있습니다. char과 함께 사용하면 char을 box하고 Object 매개 변수를 받아들이는 overload를 호출해야합니다. boxing 및 unboxing 작업은 상대적으로 비용이 많이 듭니다. 그러나 이것이 최고점에있는 마이크로 최적화라고주의하십시오! –