[英]string.Replace or stringBuilder.Replace()
我是C#的新手,所以請原諒我的錯誤。
我想每次調用該段代碼時都替換字符串的某個部分(每次調用2-4次)。 我想知道哪種方法在性能方面更適合使用: string.Replace
或stringBuilder.Replace()
嗎?
如果這段代碼被同時調用10.000次怎么辦?
找出哪個更快的最好方法是針對您的特定問題對其進行基准測試-編寫簡單的測試工具並計時這兩個選項。
話雖這么說-C#字符串是不可變的 ,這意味着創建它們后就無法更改它們。 調用String.Replace
,運行時必須為結果創建一個新的String
實例。 這意味着對同一字符串的一系列更改將很慢,因為運行時必須為每次操作創建一個新對象,分配內存並每次復制字符串數據。
StringBuilder
被專門設計為針對這種情況的可變字符串-避免在每次操作時創建新的String
實例。
因此,如果對同一字符串執行一系列Replace
調用,則StringBuilder
幾乎可以肯定會更快。
生成字符串后,使用String.Replace()
,它將立即在所有位置替換。 如果您通過一些示例來說明您的情況,那就更好了。
看一下這個鏈接,它有一個不錯的描述: 比較RegEx.Replace,String.Replace和StringBuilder.Replace –哪個性能更好?
String
替換與StringBuilder
替換不同。 但從表面上看,它們是相同的。 StringBuilder純粹是一種優化,但是考慮到字符串用法的普遍性,它至關重要。 String.Replace
始終創建一個新字符串StringBuilder.Replace
不會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.