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