2009-01-22 23 views
2

在Web應用程序中,我分割字符串並分配給鏈接名稱或字符串集合。在Web應用程序中使用stringbuilder是否有顯着的性能優勢?是否值得在網頁應用中使用StringBuilder?

編輯:2功能:將鏈接分成5-10個字符串。重新包裝成另一個字符串。此外,每次鏈接被點擊時,我一次追加一個字符串到鏈接。

回答

12

你會連接多少個字符串?你確定知道有多少,還是取決於數據庫中有多少條記錄等等?

請參閱my article on this subject瞭解更多詳細信息和指南 - 但基本上,在Web應用程序中使用StringBuilder與使用StringBuilder進行昂貴的字符串連接相比沒有區別。

編輯:恐怕還沒有完全清楚從問題到底你在做什麼。如果你有一組固定的字符串連接,並且你可以一口氣完成,那麼使用串聯來更快更可讀。例如:

string faster = first + " " + second + " " + third + "; " + fourth; 

string slower = new StringBuilder().Append(first) 
            .Append(" ") 
            .Append(second) 
            .Append(" ") 
            .Append(third) 
            .Append("; ") 
            .Append(fourth) 
            .ToString(); 

另一種選擇是當然使用格式字符串。這可能是最慢的,但最可讀的:

string readable = string.Format("{0} {1} {2}; {3}", 
           first, second, third, fourth); 

你的問題提的「添加鏈接的每個時間」建議使用該方面的一個StringBuilder雖然的一部分 - 任何這自然會導致一個循環更有效(適用於中等到大號)使用StringBuilder。

4

是的,連接常規字符串是昂貴的(真的附加到另一個字符串)。每次更改一個字符串時,.net會刪除舊字符串並用新值創建一個新字符串。這是一個不可改變的對象。

編輯:

StringBuilder的應謹慎使用,並且像任何其他方法進行評價。有時將兩個字符串連接在一起會更有效率,並且應該根據具體情況進行評估。

Atwood has an interesting article related to this.

+0

是的,是的,是的!尤其是當你必須做瘋狂的表單處理才能生成電子郵件或其他內容。 – 2009-01-22 21:50:51

+0

這真的取決於你在做什麼。我們沒有太多的背景 - 鼓勵使用StringBuilder而不考慮它是一個壞主意IMO。大量的人過度使用StringBuilder,並以較差的性能結束了較少的可讀代碼。 – 2009-01-22 21:52:21

+0

這不應該如此upvoted,經常conc conc是經常*更好* ... – annakata 2009-01-22 21:53:29

2

的表現爲什麼會在一個Web應用程序或WinForms應用程序有什麼不同?

使用stringbuilder是一個很好的實踐問題,因爲內存和對象分配,無論您爲何構建代碼,這些規則都適用。

2

如果你在迭代次數很多的循環中創建字符串,那麼使用stringbuilder是個好主意。否則,字符串連接是你最好的選擇。

1

首先,你還在寫這個應用程序嗎?如果是,則停止性能調整!第二,優先考慮正確性而不是速度。由於顯而易見的原因,長期來看可讀性更重要。第三,我們不知道你寫的確切情況和代碼。我們不能真正告訴你這個微型優化是否對你的代碼性能很重要。測量差異。我強烈推薦Red Gate的螞蟻分析器。

相關問題