下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计ASP程序 → 改进 ASP 的字符串处理性能__教程
改进 ASP 的字符串处理性能__教程
日期:2007-5-20 1:22:14 人气:90     [ ]
上一页 [1] [2] [3] [4] 下一页
' 用大小和增长系数初始化缓冲区
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.Write。Write 函数使用隐式优化的字符串缓冲区,此缓冲区能够提供非常优秀的性能特性。修改后的 WriteHTML 代码如下所示:

Function WriteHTML( Data )
Dim nRep
For nRep = 0 to 99
Response.Write "<TR><TD>"
Response.Write (nRep + 1)
Response.Write "</TD><TD>"
Response.Write Data( 0, nRep )
Response.Write "</TD><TD>"
Response.Write Data( 1, nRep )
Response.Write "</TD><TD>"
Response.Write Data( 2, nRep )
Response.Write "</TD><TD>"
Response.Write Data( 3, nRep )
Response.Write "</TD><TD>"
Response.Write Data( 4, nRep )
Response.Write "</TD><TD>"
Response.Write Data( 5, nRep )
Response.Write "</TD></TR>"
Next
End Function

虽然这段代码很可能为我们提供最佳的性能和可缩放性,但在某种程度上已经破坏了封装,因为现在会将函数内部的代码直接写入 Response 流,所以调用代码丧失了一定程度的控制权。另外,移动此代码(例如,移入 COM 组件)将变得更加困难,因为此函数与 Response 流存在依赖关系。

测试
上面提到的四种方法分别通过一个简单的 ASP 页面(包含一个由虚拟字符串数组提供数据的单个表格)进行了测试。我们使用 Application Center Test&reg; (ACT) 从单个客户端(Windows&reg; XP Professional,PIII-850MHz,512MB RAM)针对 100Mb/sec 网络中的单个服务器(Windows 2000 Advanced Server,双 PIII-1000MHz,256MB RAM)执行了测试。ACT 配置为使用 5 个线程,以模拟 5 个用户连接至网站时的负载。每个测试都包括 20 秒预热时间和随后的 100 秒负载时间,在负载期间创建了尽可能多的请求。

通过更改主表格循环中的重复次数,针对不同数目的连接操作重复运行测试,如 WriteHTML 函数中的代码片断所示。运行的每个测试都使用上文提到的四种不同的方法执行。

结果
下面的一系列图表显示了各种方法对整个应用程序吞吐量的影响,以及 ASP 页面的响应时间。通过这些图表,我们可以了解应用程序支持的请求数目,以及用户等待页面下载至浏览器所需的时间。

表 1:使用的连接方法缩写的说明

方法缩写 说明
RESP 内置 Response.Write 方法
CAT 标准连接(“&”)方法
PCAT 加括号的连接(“&”)方法
BLDR StringBuilder 方法

在模拟典型 ASP 应用程序工作负荷方面,此测试与实际情况相差甚远,从表 2 中可以明显看到,即使重复 420 次,此页面仍不是特别大。现在很多复杂的 ASP 页面在这些数字上都是比较高的,设置有可能超出此测试范围的限制。

表 2:测试示例的页面大小和连接数目

重复次数 连接数目 页面大小(以字节为单位)
15 240 2,667
30 480 4,917
45 720 7,167
60 960 9,417
75 1,200 11,667
120 1,920 18,539
180 2,880 27,899
240 3,840 37,259
300 4,800 46,619
360 5,760 55,979
420 6,720 62,219



图 2:吞吐量结果图

从图 2 的图表中可以看到,正如我们所预期的,多重 Response.Write 方法 (RESP) 在测试的整个重复测试范围中为我们提供了最佳的吞吐量。但令人惊讶的是,标准字符串连接方法 (CAT) 的下降如此巨大,而加括号的方法 (PCAT) 在重复执行 300 多次时性能依旧要好很多。在大约重复 220 次之处,字符串缓存带来的性能提高超过了 StringBuilder 方法 (BLDR) 固有的开销,在这一点以上,在此 ASP 页面中使用 StringBuilder 所需的额外开销是值得的。
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.