我应该为StringBuilder类使用哪个构造函数?

时间:2010-12-20 19:28:15

标签: .net performance stringbuilder

我正在从一个项目列表中构建一个大字符串。每个项目都会生成一个大约200个字符长(正负100%)的字符串。

使用

可以获得(明显的)性能优势吗?
Dim sb = New StringBuilder(averageCharacterCount * items.Count)

而不是

Dim sb = New StringBuilder()

即使指定的容量只是一个猜测?

5 个答案:

答案 0 :(得分:4)

我会猜测前者,因为它有助于最大限度地减少重新分配,但我猜这种差异是微不足道的(我们称之为“micro optimization”),因为这甚至不太可能成为瓶颈。但只有您可以回答哪些肯定会根据您的具体用例提供更好的性能。如果你真的想知道,可以两种方式编写代码,测量每个代码的性能,你就会得到明确的答案。

答案 1 :(得分:2)

从正确的球场开始将节省一些重新分配/副本,但请注意,由于它是一个加倍算法,它将很快接近大小。如果它在100%之内,那么对于最坏的情况只有一次重新分配/复制,那么是 - 从该方法开始将有助于一些

在很多方面都是微优化;你已经以正确的方式做到了,所以除非我们的分析显示这仍然是仍然瓶颈(因此你需要挤出最后几个循环的广告),忘掉它并继续下一件事

答案 2 :(得分:0)

您很可能会看到一些改进,因为该类不必重新分配和复制其项目多次。你需要进行分析才能确定这对你有多大帮助,但由于这是一个简单的改变,我没有理由不这样做。

答案 3 :(得分:0)

除非这是你的应用程序唯一的功能,否则你不会注意到。

答案 4 :(得分:0)

如果您有字符串列表,那么使用String.Concat代替StringBuilder可以获得更好的效果。