2011-10-14 67 views
1

可能重複:
Stringbuilder vs String.Concat需要多少個字符串才能使StringBuilder更高效?

據我瞭解,字符串是不可變的,所以如果你做"one " + "two",而不是重用這兩個字符串的內存,創建一個新的字符串價值「一二」。這將成爲一個問題,如果你這樣做:

String output = ""; 
for (int i = 0; i < 20; i++){ 
    output = output + ii.toString(); 
} 

因爲19(或39?)字符串創建和廢棄,得到最終所需的輸出。

字符串構建器是可變的,所以您可以有效地將字符串添加到一起,然後在完成時將它們轉換爲字符串。

我認爲在創建字符串構建器方面存在一些開銷,而且今天使用的聰明編譯器優化了大量的字符串添加問題。所以我的問題是:在使用StringBuilder變得更高效之前,需要添加多少個字符串?或者我的假設是不正確的?

+0

這屬於微優化的範疇 - 如果實際上存在性能問題並將字符串連接標識爲問題,可能會擔心。 – Oded

+2

我幾年前玩過這個(字符串連接)。 據我記得,差異從1000個字符串片斷開始 – VMykyt

+1

http://www.codinghorror.com/blog/2009/01/the-sad-tragedy-of-micro-optimization-theater.html –

回答

相關問題