我有一種情況,我需要連接幾個字符串以形成一個類的id。基本上我只是在列表中循環獲取對象的ToString值,然後將它們連接起來。字符串連接vs字符串生成器。性能
foreach (MyObject o in myList)
result += o.ToString();
名單預計不會有超過5個元素(雖然它可以,但是這是一個非常,非常邊際的情況下),通常都會有1到3個元素,是普遍的情況只是有一個或二。
什麼是更多的性能,保持串聯或使用StringBuilder?
StringBuilder bld = new StringBuilder()
foreach (MyObject o in myList)
bld.Append(o.ToString());
我不確定創建StringBuilder是否需要比標準連接更多的時間用於最常見的情況。
這是懶惰的,列表中的項目一旦創建就不會改變,所以當被調用時id是懶惰地構造的。
作爲一個方面說明...我應該使用固定的數組而不是List嗎?如果我這樣做,我會得到任何表現或記憶改善嗎? (無論如何,列表只能用作IEnumerable)
問題的更一般的觀點可能是,有多少個字符串足以停止連接並開始構建?
我是否應該甚至費心去測試這種情況?
if (myList.Count > 4)
ConcatWithStringBuilder(myList);
這將是一個完美的情況下進行微觀優化。甚至不要打擾這個數量的琴絃。 – 2009-10-23 11:28:03
可能的微秒差距是否值得您的麻煩?編寫這個問題花費的時間可能比在程序生命週期中concat/builder的區別要多。特別是如果它很懶,並且每次執行只調用一次。 – 2009-10-23 12:09:50
[String StringBuilder]的可能的重複(https://stackoverflow.com/questions/73883/string-vs-stringbuilder) – Matt 2017-07-14 08:12:05