在web应用程序中,我拆分字符串,并将其分配给链接名称或字符串集合。在web应用程序中使用stringbuilder是否有显著的性能优势?
编辑:2个功能:将一个链接拆分为5-10个字符串。THen重新打包到另一个字符串中。另外,每次单击链接时,我都会将一个字符串附加到该链接。
发布于 2009-01-22 21:51:33
您将连接多少个字符串?你确定会有多少条记录,还是取决于数据库中有多少条记录等等?
有关更多细节和指导原则,请参阅my article on this subject -但基本上,在web应用程序中使用字符串连接与使用StringBuilder的代价没有什么不同。
编辑:恐怕从这个问题中还不能完全清楚你到底在做什么。如果您有一组固定的字符串要连接,并且可以一次完成所有这些操作,那么使用连接会更快,而且可能更具可读性。例如:
string faster = first + " " + second + " " + third + "; " + fourth;
string slower = new StringBuilder().Append(first)
.Append(" ")
.Append(second)
.Append(" ")
.Append(third)
.Append("; ")
.Append(fourth)
.ToString();当然,另一种选择是使用格式化字符串。这可能是最慢的,但可读性最强的:
string readable = string.Format("{0} {1} {2}; {3}",
first, second, third, fourth);你的问题中提到“每次添加一个链接”的部分建议使用StringBuilder -任何自然地导致循环的东西都使用StringBuilder更有效(对于中等到大量的数字)。
发布于 2009-01-22 21:49:53
是的,连接常规字符串的开销很大(实际上是将字符串附加到另一个字符串的末尾)。每次字符串发生更改时,.net都会删除旧字符串,并使用新值创建一个新字符串。它是一个不可变的对象。
编辑:
Stringbuilder应该谨慎使用,并像任何其他方法一样进行评估。有时,将两个字符串连接在一起会更有效率,应该根据具体情况进行评估。
Atwood has an interesting article related to this.
发布于 2009-01-22 21:52:07
您应该看看this excellent article by Jon Skeet中有关连接字符串的内容。
https://stackoverflow.com/questions/470944
复制相似问题