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() - ; i >= ; 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() - ; i >= ; i--)
{
if (sArr[i].ToString() != "")
{
sb.Append(sArr[i]);
if (i != ) 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

C# String.Join 与 StringBuilder 对比,谁更快的更多相关文章

  1. 也谈string.Join和StringBuilder的性能比较

    前几天在园子里面看到一篇讲StringBuilder性能的文章.文章里面给出了一个测试用例,比较StringBuilder.AppendJoin和String.Join的性能.根据该测试结果,&quo ...

  2. string.Join和string.Concat的区别

    源自Difference between String.Join() vs String.Concat() With .NET 4.0, String.Join() uses StringBuilde ...

  3. 教你50招提升ASP.NET性能(二十三):StringBuilder不适用于所有字符串连接的场景;String.Join可能是

    (41)StringBuilder is NOT the answer for all string concatenation scenarios; String.Join could be 招数4 ...

  4. String StringBuffer StringBuilder对比

    1.相同点 三者都可以用来存储字符串类型数据. 2.不同点 String类型对象内容不可变,每变化一次都会创建一个新的对象. StringBuiler与StringBuffer的内容与长度均可以发生变 ...

  5. java String、String.concat和StringBuilder性能对比

    看到网上有人已经做过对比,并且贴出了代码,然后我运行了之后发现跟我分析的结论差距很大.发现他的代码有个问题,UUID.randomUUID() 首次调用耗时会很高,这个耗时被计算给了String,这对 ...

  6. String、StringBuffer、StringBuilder对比

    1.String 用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改.这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间. Str ...

  7. BCL中String.Join的实现

    在开发中,有时候会遇到需要把一个List对象中的某个字段用一个分隔符拼成一个字符串的情况.比如在SQL语句的in条件中,我们通常需要把List<int>这样的对象转换为“1,2,3”这样的 ...

  8. String.Join的实现

    String.Join的实现 在开发中,有时候会遇到需要把一个List对象中的某个字段用一个分隔符拼成一个字符串的情况.比如在SQL语句的in条件中,我们通常需要把List<int>这样的 ...

  9. c#从基础学起string.Join(",", keys.ToArray())

    总感觉自己工作6年了,经验丰富.直到近期报了一个.net进阶班才知道.我还差得很远.就拿string.join对比 我的代码: public static int InsertModel<T&g ...

随机推荐

  1. 便于理解mysql内幕的各种逻辑图组

    便于理解mysql内幕的各种逻辑图组 http://blog.sina.com.cn/s/blog_445e807b0101ggtl.html 以下是个人一直以来从网络等各种途径收集到的一些对理解my ...

  2. Rufus 制作 USB 启动盘简单教程

    制作 Windows 10 启动盘 U盘 / USB 安装盘图文教程  http://rufus.akeo.ie/downloads/rufus-2.2p.exe 1.将U盘连接到电脑,以管理员身份运 ...

  3. Spark Shuffle Write阶段磁盘文件分析

    这篇文章会详细介绍,Sort Based Shuffle Write 阶段是如何进行落磁盘的 流程分析 入口处: org.apache.spark.scheduler.ShuffleMapTask.r ...

  4. 实习培训——Java基础(2)

    实习培训——Java基础(2) 1  Java 变量类型 在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identi ...

  5. Andrew Ng-ML-第十章-应用机器学习的建议

    1.如何改进性能不好的学习算法 图1.运用到测试集上效果不佳 当进行一个正则化线性回归时,最小化了代价函数得到参数,但是运用到新的测试集上,发现效果不好,那么如何改进? 1).增加训练集.但是实际上花 ...

  6. RMAN备份与恢复实践(转)

    1   RMAN备份与恢复实践 1.1  备份 1.1.1 对数据库进行全备 使用backup database命令执行备份 RMAN> BACKUP DATABASE; 执行上述命令后将对目标 ...

  7. iOS常用第三方类库及Xcode插件

    第三方类库(github地址): 1.AFNetworking 网络数据     https://github.com/AFNetworking/AFNetworking 2.SDWebImage 图 ...

  8. linux字符处理命令 sort(部分转载)

    [root@LocalWeb01 ~]# sort /etc/passwd |less   (升序 ) [root@LocalWeb01 ~]# sort -r /etc/passwd |less ( ...

  9. JSTL—标签

    什么是JSTL标签? Jsp标准标签库(JSP Standerd Tag Library) JSTL的优点是什么? 1) 提供一组标准的标签 2)可用于编写动态功能 使用JSTL的步骤? 1)引入ja ...

  10. HDU 1586 log 的运用

    log函数的应用,因为 log(a^b)=b*log(a); log(a*b)=log(a)+log(b); 比如 log10(123456789)==log10(1.23456789)+8; log ...