C# String.Join 與 StringBuilder 對比,誰更快 Performance Comparison


String.Join 文檔      StringBuilder 文檔

 

這兩天刷 Leedcode 做到一道 String 的題時突然想到這倆對比的問題,於是查了一下資料並簡單對比了一下。

首先對於 151. Reverse Words in a String  這道題而言,對比提交結果如下:

 

 

 明顯 StringBuilder 更快,並且更省內存。

 

    // Join   
    public static string ReverseWords(string s)
        {
            var sArr = s.Split(' ');
            var joinStr ="";
            for (var i = sArr.Count() - 1; i >= 0; i--)
            {
                if (sArr[i].ToString() != "")
                {
                    joinStr = string.Join(" ", joinStr, sArr[i]);
                }
            }
            return joinStr.Trim();
        }

        // StringBuilder     
        public string ReverseWords2(string s)
        {
            var sArr = s.Split(' ');
            var sb = new StringBuilder();
            for (var i = sArr.Count() - 1; i >= 0; i--)
            {
                if (sArr[i].ToString() != "")
                {
                    sb.Append(sArr[i]);
                    if (i != 0) sb.Append(" ");
                }
            }
            return sb.ToString().Trim();
        }

 

 

 

那么什么情況下Join會更快呢?   

答: 在你已經有一個字符串數組,並且要以分隔符合並的情況下, Join 是最快的方法。 也就是 : Join(String, String[]) 的方法。

 

當然了,無論這兩種方法用哪一種,肯定都是優於  "string1" + " " + "string2"  這樣直接又粗暴的方式的。 

 

具體證明和更多討論請參考:  https://stackoverflow.com/questions/585860/string-join-vs-stringbuilder-which-is-faster

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM