我想知道當我選擇將一個字符字符串或單個字符添加到常量字符串時是否會有任何性能影響。將字符串和字符串放在一起的性能
所以我寫了一個小的控制檯應用程序(.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();
}
}
你要評論一個for循環。
因此,STR + "C"
大約需要1300毫秒。
對於STR + 'C'
我還沒有看到結果。它需要很長時間,似乎很難打擾我的電腦。
所以,我的問題是。這種性能影響可能如何?我知道在實際使用中99999999的數值不會經常出現,但它仍然是一個巨大的差異。
在此先感謝!
非常感謝,很好的回答!即使沒有恆定的「STR +」,C「」幾乎是添加字符的兩倍。所以我現在會使用單個字符串。再次感謝! – Andy
@Andy很高興幫助。您的觀察是有意義的,因爲'string's可以直接連接,而不必先將'char'轉換爲'string'。 – dlev
@Andy與Tigran的答案相結合:''''操作符被C#編譯器替換爲'String.Concat'的調用。當你使用字符串時,它可以直接調用接受字符串參數的重載。當你用char來使用它的時候,它必須把char放在盒子裏,並調用接受一個Object參數的重載。拳擊和拆箱操作相對昂貴,尤其是在緊密環路中執行時。但要小心,這是微觀優化的最高點! –