Dot-Net
String.Join 與 StringBuilder:哪個更快?
在上一個關於將 a 格式化
double[][]為 CSV 格式的問題中,有人建議usingStringBuilder會比String.Join. 這是真的?
簡短的回答:這取決於。
長答案:如果您已經有一個字元串數組要連接在一起(帶有分隔符),
String.Join那麼這是最快的方法。
String.Join可以查看所有字元串以計算出所需的確切長度,然後再次複製所有數據。這意味著將不涉及額外的複制。唯一的缺點是它必須遍歷字元串兩次,這意味著可能會比必要的次數更多地破壞記憶體記憶體。如果您事先沒有將字元串作為數組,則使用起來可能會更快
StringBuilder-但在某些情況下它不是。如果使用一種StringBuilder方法進行大量複製,那麼建構一個數組然後呼叫String.Join可能會更快。編輯:這是對單個呼叫
String.Join與對StringBuilder.Append. 在最初的問題中,我們有兩個不同級別的String.Join呼叫,因此每個嵌套呼叫都會創建一個中間字元串。換句話說,它更複雜,更難猜測。我會驚訝地看到任何一種方式在典型數據中都顯著(在復雜性方面)“獲勝”。編輯:當我在家時,我會寫一個對
StringBuilder. 基本上,如果你有一個數組,其中每個元素的大小大約是前一個元素的兩倍,並且你得到它恰到好處,你應該能夠為每個追加(元素,而不是分隔符,儘管需要也要考慮在內)。在這一點上,它幾乎和簡單的字元串連接一樣糟糕——但String.Join不會有任何問題。