当前位置: 网学 > 编程文档 > ASP > 正文

改进 ASP 应用程序中的字符串处理性能

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/03/27
ialSize > 0 Then m_nInitialSize = InitialSize
If Growth > 0 Then m_nGrowth = Growth
End Sub '' 初始化缓冲区
Private Sub InitBuffer()
m_nSize = -1
m_nPos = 1 End Sub '' 增大缓冲区
Private Sub Grow(Optional MinimimGrowth As Long) '' 初始化缓冲区(如有必要)
If m_nSize = -1 Then
m_nSize = m_nInitialSize
m_sText = Space$(m_nInitialSize)
Else '' 只是增长
Dim nGrowth As Long
nGrowth = IIf(m_nGrowth > MinimimGrowth,
m_nGrowth, MinimimGrowth)
m_nSize = m_nSize + nGrowth
m_sText = m_sText & Space$(nGrowth)
End If End Sub '' 将缓冲区大小调整到当前使用的大小
Private Sub Shrink()
If m_nSize > m_nPos Then
m_nSize = m_nPos - 1
m_sText = RTrim$(m_sText)
End If End Sub '' 添加单个文本字符串
Private Sub AppendInternal(ByVal Text As String)
If (m_nPos + Len(Text)) > m_nSize Then Grow Len(Text)
Mid$(m_sText, m_nPos, Len(Text)) = Text
m_nPos = m_nPos + Len(Text) End Sub '' 添加一些文本字符串
Public Sub Append(ParamArray Text())
Dim nArg As Long
For nArg = 0 To UBound(Text)
AppendInternal CStr(Text(nArg))
Next nArg End Sub '' 返回当前字符串数据并调整缓冲区大小
Public Function ToString() As String
If m_nPos > 0 Then
Shrink
ToString = m_sText
Else
ToString = ""
End If
End Function '' 清除缓冲区并重新初始化
Public Sub Clear()
InitBuffer
End Sub

     此类中使用的基本原则是,在类级别将变量 (m_sText) 用作字符串缓冲区,并使用 Space$ 函数以空格字符填充此缓冲区以将其设置为特定的大小。如果要将更多文本与现有文本连接在一起,则在检查缓冲区的大小足以存放新文本后,使用 Mid$ 函数在正确位置插入文本。ToString 函数将返回当前存储在缓冲区中的文本,并将缓冲区的大小调整为能够容纳此文本的正确长度。使用 StringBuilder 的 ASP 代码如下所示:

Function WriteHTML( Data )
Dim oSB Dim nRep
Set oSB = Server.CreateObject( "StringBuilderVB.StringBuilder" ) '' 用大小和增长系数初始化缓冲区
oSB.Init 15000, 7500
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
WriteHTML = oSB.ToString()
Set oSB = Nothing
End Function

     使用 StringBuilder 需要一定的开销,因为每次使用此类时都必须创建它的实例,并且在创建第一个类实例时必须加载包含此类的 DLL。对 StringBuilder 实例进行额外方法调用时也需要开销。使用加括号的“&”方法时,StringBuilder 如何执行取决于多个因素,包括连接的数目、要构建的字符串的大小以及选择的 StringBuilder 字符串缓冲区的初始化参数的性能。请注意,在多数情况下,将缓冲区中所需的空间量估计得略高一些要远远好于让其不断增长。

     内置方法

      ASP 包含一种非常快捷的创建 HTML 代码的方法,只需多次调用 Response.WriteWrite 函数使用隐式优化的字符串缓冲区,此缓冲区能够提供非常优秀的性能特性。修改后的 WriteHTML 代码如下所示:

Function WriteHTML( Data )
Dim nRep
For nRep = 0 to 99
Response.Write "<
  • 上一篇资讯: Asp编码优化技巧8则
  • 下一篇资讯: 提高ASP性能的最佳选择
  • 浏览:
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号