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

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

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/03/27

鉴于大家对ASP十分关注,我们编辑小组在此为大家搜集整理了“改进 ASP 应用程序中的字符串处理性能”一文,供大家参考学习!

James Musson
Developer Services, Microsoft UK
2003年3月

适用于:
Microsoft? Active Server Pages?
Microsoft Visual Basic?摘要:大多数 Active Server Pages (ASP) 应用程序都要通过字符串连接来创建呈现给用户的 HTML 格式的数据。本文对几种创建此 HTML 数据流的方法进行了比较,在特定情况下,某些方法在性能方面要优于其他方法。本文假定您已经具备一定的 ASP 和 Visual Basic 编程方面的知识。

    简介

     编写 ASP 页面时,开发人员实际上是创建一个格式化的文本流,通过 ASP 提供的 Response 对象写入 Web 客户端。创建此文本流的方法有多种,而您选择的方法将对 Web 应用程序的性能和可缩放性产生很大影响。很多次,在我帮助客户优化其 Web 应用程序的性能时,发现其中一个比较有效的方法是更改 HTML 流的创建方式。本文将介绍几种常用技术,并测试它们对一个简单的 ASP 页面的性能所产生的影响。

    ASP 设计

    许多 ASP 开发人员都遵循良好的软件工程原则,尽可能地将其代码模块化。这种设计通常使用一些包含文件,这些文件中包含对页面的特定不连续部分进行格式化生成的函数。这些函数的字符串输出(通常是 HTML 表格代码)可以通过各种组合创建一个完整的页面。某些开发人员对此方法进行了改进,将这些 HTML 函数移到 Visual Basic COM 组件中,希望充分利用已编译的代码提供的额外性能。尽管这种设计方法很不错,但创建组成这些不连续 HTML 代码组件的字符串所使用的方法将对 Web 站点的性能和可缩放性产生很大的影响,无论实际的操作是在 ASP 包含文件中执行还是在 Visual Basic COM 组件中执行。

字符串连接

     请看以下 WriteHTML 函数的代码片断。名为 Data 的参数只是一个字符串数组,其中包含一些要格式化为表格结构的数据(例如,从数据库返回的数据)。

Function WriteHTML( Data )
Dim nRep For nRep = 0 to 99
sHTML = sHTML & vbcrlf _
& "<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 = sHTML
End Function

     这是很多 ASP 和 Visual Basic 开发人员创建 HTML 代码时常用的方法。sHTML 变量中包含的文本返回到调用代码,然后使用 Response.Write 写入客户端。当然,这还可以表示为直接嵌入不包含 WriteHTML 函数的页面的类似代码。此代码的问题是,ASP 和 Visual Basic 使用的字符串数据类型(BSTR 或 Basic 字符串)实际上无法更改长度。这意味着每当字符串长度更改时,内存中字符串的原始表示形式都将遭到破坏,而且将创建一个包含新字符串数据的新的表示形式:这将增加分配内存和解除分配内存的操作。当然,ASP 和 Visual Basic 已为您解决了这一问题,因此实际开销不会立即显现出来。分配内存和解除分配内存要求基本运行时代码解除各个专用锁定,因此需要大量开销。当字符串变得很大并且有大块内存要被快速连续地分配和解除分配时,此问题变得尤为明显,就像在大型字符串连接期间出现的情况一样。尽管这一问题对单用户环境的影响不大,但在服务器环境(例如,在 Web 服务器上运行的 ASP 应用程序)中,它将导致严重的性能和可缩放性问题。下面,我们回到上述代码片段:此

  • 上一篇资讯: Asp编码优化技巧8则
  • 下一篇资讯: 提高ASP性能的最佳选择
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号