原先C#使用string时代码示例如下:string strName = "";
strName += "name: " + sUserName;现改为StringBuilder后如下:
StringBuilder sbName = new StringBuilder(128);
sbName.Append("name: " + sUserName);
还是
sbName.Append("name: ");
sbName.Append(sUserName);
效率高?是否后者高,因为前者似乎还有一步2个string相加返回的操作,但后者将字符串拆的太散了,连接代码一旦多时显得有一点罗嗦。看了一篇改进 ASP 应用程序中的字符串处理性能
James Musson, Developer Services, Microsoft UK 2003年3月的文章,
当时作者在ASP内自建了一个仿StringBuilder类:' 添加一些文本字符串
Public Sub Append(ParamArray Text())
Dim nArg As Long
For nArg = 0 To UBound(Text)
AppendInternal CStr(Text(nArg))
Next nArg
End Sub发现他这样传参数挺好的,写起来很好读:For nRep = 0 to 99
oSB.Append "<TR><TD>", (nRep + 1), "</TD><TD>", _
Data( 0, nRep ), "</TD><TD>", _
Data( 1, nRep ), "</TD><TD>", _
Data( 2, nRep ), "</TD><TD>", _
Data( 3, nRep ), "</TD><TD>", _
Data( 4, nRep ), "</TD><TD>", _
Data( 5, nRep ), "</TD></TR>"
Next有写类似C++的传不确定数目参数的方法,可惜.NET 的 CStringBuilder.Append似乎不能这样,个人觉得有些美中不足。
strName += "name: " + sUserName;现改为StringBuilder后如下:
StringBuilder sbName = new StringBuilder(128);
sbName.Append("name: " + sUserName);
还是
sbName.Append("name: ");
sbName.Append(sUserName);
效率高?是否后者高,因为前者似乎还有一步2个string相加返回的操作,但后者将字符串拆的太散了,连接代码一旦多时显得有一点罗嗦。看了一篇改进 ASP 应用程序中的字符串处理性能
James Musson, Developer Services, Microsoft UK 2003年3月的文章,
当时作者在ASP内自建了一个仿StringBuilder类:' 添加一些文本字符串
Public Sub Append(ParamArray Text())
Dim nArg As Long
For nArg = 0 To UBound(Text)
AppendInternal CStr(Text(nArg))
Next nArg
End Sub发现他这样传参数挺好的,写起来很好读:For nRep = 0 to 99
oSB.Append "<TR><TD>", (nRep + 1), "</TD><TD>", _
Data( 0, nRep ), "</TD><TD>", _
Data( 1, nRep ), "</TD><TD>", _
Data( 2, nRep ), "</TD><TD>", _
Data( 3, nRep ), "</TD><TD>", _
Data( 4, nRep ), "</TD><TD>", _
Data( 5, nRep ), "</TD></TR>"
Next有写类似C++的传不确定数目参数的方法,可惜.NET 的 CStringBuilder.Append似乎不能这样,个人觉得有些美中不足。
sbName.Append("name: " + sUserName);
还是
sbName.Append("name: ");
sbName.Append(sUserName);
效率高?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
后者的效率高
因为前者还是有一个“+”的操作,这样会多分配一次内存,而内存分配的时间是相对比较长的
你可以这样写
sbName.Append("name: ").Append(sUserName);另外,你在new一个StringBuilder的时候那个参数也是需要考虑的,不需要那么长的话就不要用那么长最后,我觉得现在的电脑都比较快,而且便宜,像这样的小的性能问题一般来讲,其优先级应该比代码的可读性更低,所以这种情况还是应该更多的考虑代码可读性