性能StringBuilder插入与字符串Concat

时间:2015-09-25 09:51:17

标签: c# .net string stringbuilder

将字符串添加到另一个字符串的性能更高效吗?

使用StringBuilder.Insert方法还是string.Concat方法?

messageString.Insert(0, prependedString);

string.Concat(prependedString, messageString);

在我的情况下,消息字符串相对较大,前缀字符串很短。

2 个答案:

答案 0 :(得分:7)

如果项目数量固定,

string.Concat是最快的方法。在所有情况下都适用这种说法。字符串有多长并不重要。

string.Concat计算最终字符串大小,然后将这些位复制到新分配的字符串中。它不能更快​​地完成。

实际上,您应该编写a + b而不是调用Concat(如果在特定情况下可以这样做)。

  

对于大字符串使用字符串构建器

假。为什么会这样?!

  

如果您正在使用StringBuilder

连接两个以上的字符串

假。如果数字是固定的,请使用Concat。 StringBuilder只会增加你的开销。

  

答案取决于你连接的字符串数量,以及它们的大小

假。我上面描述的算法总是最快的解决方案。

StringBuilder周围的神话是一个惊人的变化。如果您了解这两个选项如何在内部工作,您可以自己回答所有这些问题。我没有研究和记住所有这些答案。我根据对内部的理解来生成它们。

答案 1 :(得分:3)

这是How to use StringBuilder Wisely的副本,您可以在那里阅读我的完整答案,简而言之:

  

Concat函数比使用StringBuilder更快,因为已知进入该函数的字符串数。