在网络应用程序中,我分割字符串并分配链接名称或字符串集合。将stringbuilder用于Web应用程序是否有显着的性能优势?
编辑:2个功能:将链接分成5-10个字符串。然后重新打包成另一个字符串。每次点击链接时,我也会一次向链接添加一个字符串。
答案 0 :(得分:12)
你会连接多少个字符串?你知道会有多少,或者它取决于数据库中有多少记录等?
有关更多详细信息和指南,请参阅my article on this subject - 但基本上,在使用StringBuilder进行字符串连接时,使用Web应用程序并没有什么区别。
编辑:我担心你究竟在做什么仍然不完全清楚。如果你有一组固定的字符串要连接,并且你可以一次性完成所有这些,那么使用连接它可以更快并且可能更具可读性。例如: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都会更有效(对于中等到大数)。
答案 1 :(得分:4)
是的,连接常规字符串是很昂贵的(实际上将字符串附加到另一个字符串的末尾)。每次更改字符串时,.net都会删除旧字符串并使用新值创建一个新字符串。这是一个不可改变的对象。
编辑:
Stringbuilder应谨慎使用,并像任何其他方法一样进行评估。有时将两个字符串连在一起会更有效,并且应根据具体情况进行评估。
答案 2 :(得分:4)
你应该看一下关于连接字符串的this excellent article by Jon Skeet。
答案 3 :(得分:2)
为什么Web应用程序或winforms应用程序的性能会有所不同?
使用stringbuilder是一个很好的做法,因为内存和对象分配,无论你为什么要构建代码,规则都适用。
答案 4 :(得分:2)
如果你在一个迭代次数很多的循环中创建字符串,那么使用stringbuilder是个好主意。否则,字符串连接是你最好的选择。
答案 5 :(得分:1)
首先,你还在写这个应用程序吗?如果是,则停止性能调整! 第二,优先考虑正确性超速。从长远来看,可读性更为重要,原因很明显。 第三,我们不知道你写的确切情况和代码。如果这种微观优化对代码的性能很重要,我们无法真正建议您。衡量差异。我强烈推荐红门的蚂蚁剖析器。