我需要修复一个经典的asp页面,从数据库中读取数千行并鲁莽串联字符串来创建一个大型的html表的服务器端脚本超时问题。修补一个经典的asp页面,做了太多的字符串连接
我应该使用Response.Write还是使用COM创建一个StringBuilder?
我需要修复一个经典的asp页面,从数据库中读取数千行并鲁莽串联字符串来创建一个大型的html表的服务器端脚本超时问题。修补一个经典的asp页面,做了太多的字符串连接
我应该使用Response.Write还是使用COM创建一个StringBuilder?
您已经发现问题,这始终是一个好的开始。你提到的速度问题也是因为字符串连接使用了大量的内存 - 我认为,一旦你达到了第三或第四个连接,StringBuilder变得更有效率。
虽然我没有任何基准测试,但从架构视图来看,我的偏好当然是转向编写COM组件来处理数据库操作。编译的应用程序可以提高速度,以及共享数据库连接等附加功能,您将从中受益。另外,如果您最终希望转向更现代化的开发平台,它将允许您开始为将来的开发构建一个良好的数据模型;如果计划和仔细编写,您可能会发现大量的代码可以重复使用,并且您还有机会介绍开发实践,例如TDD,那个经典的ASP不[很容易]支持。
</personal-opinion>,显然。
您还可以使用.NET System.IO.StringWriter类(是的,这是有可能在传统的ASP!)
我用它在这个StringBuffer类:
Class StringBuffer
Dim buf
Private Sub Class_Initialize()
Set buf = CreateObject("System.IO.StringWriter")
End Sub
Private Sub Class_Terminate()
Set buf = Nothing
End Sub
Public Sub Append(ByVal strValue)
If Not IsNull(strValue) Then
buf.Write_12 CStr(strValue)
End If
End Sub
Public Sub AppendLine(ByVal strValue)
buf.Write_12 strValue & vbCRLF
End Sub
Public Function ToString()
ToString = buf.GetStringBuilder().ToString()
End Function
End Class
感谢您的答复,我也刚刚发现[这个MSDN文章](http://msdn.microsoft.com/en-us/library/ms972323.aspx),它回答了我的问题。 – Grokodile