原先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似乎不能这样,个人觉得有些美中不足。

解决方案 »

  1.   

    该作者也比较过,任何情况下都是Response.Write最快,但函数结构就不够严密了。
      

  2.   

    StringBuilder sbName = new StringBuilder(128);
    sbName.Append("name: " + sUserName);
    还是
    sbName.Append("name: ");
    sbName.Append(sUserName);
    效率高?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    后者的效率高
    因为前者还是有一个“+”的操作,这样会多分配一次内存,而内存分配的时间是相对比较长的
    你可以这样写
    sbName.Append("name: ").Append(sUserName);另外,你在new一个StringBuilder的时候那个参数也是需要考虑的,不需要那么长的话就不要用那么长最后,我觉得现在的电脑都比较快,而且便宜,像这样的小的性能问题一般来讲,其优先级应该比代码的可读性更低,所以这种情况还是应该更多的考虑代码可读性
      

  3.   

    后者高,+ 是一个字符串操作符,+ 和 & 本身就是比stringbuilder.append的效率要差