纲要:ASP动态生成的内容以什么方式输出效率最高?最好用哪种方法提取数据库记录集?本文测试了近20个这类ASP开发中常见的问题,测试工具所显示的时间告诉我们:这些通常可以想当然的问题不仅值得关注,而且还有出乎意料的秘密隐藏在内。
一、测试目的
本文的第一部分考察了ASP开发中的一些基本问题,给出了一些性能测试结果以帮助读者理解放入页面的代码到底对性能有什么影响。ADO是由Microsoft开发的一个通用、易用的数据库接口,事实证明通过ADO与数据库交互是ASP最重要的应用之一,在第二部分中,我们就来研究这个问题。
ADO所提供的功能相当广泛,因此准备本文最大的困难在于如何界定问题的范围。考虑到提取大量的数据可能显著地增加Web服务器的负载,所以我们决定这一部分的主要目的是找出什么才是操作ADO记录集的最优配置。然而,即使缩小了问题的范围,我们仍旧面临很大的困难,因为ADO可以有许多种不同的方法来完成同一个任务。例如,记录集不仅可以通过Recordset类提取,而且也可以通过Connection和Command类提取;即使得到记录集对象之后,还有许多可能戏剧性地影响性能的操作方法。然而,与第一部分一样,我们将尽可能地涵盖最广泛的问题。
具体地讲,这一部分的目标是收集足够多的信息,回答下列问题:
l 是否应该通过包含引用ADOVBS.inc?
l 使用记录集时是否应该创建单独的连接对象?
l 最好用哪种方法提取记录集?
l 哪种游标类型和记录锁定方式效率最高?
l 是否应该使用本地记录集?
l 设置记录集属性用哪种方法最好?
l 用哪种方法引用记录集字段值效率最高?
l 用临时字符串收集输出是一种好方法吗?
二、测试环境
本测试总共用到了21个ASP文件,这些文件可以从本文后面下载。每一个页面设置成可以运行三种不同的查询,分别返回0、25、250个记录。这将帮助我们隔离页面本身的初始化、运行开销与用循环访问记录集的开销。
为便于测试,数据库连接字符串和SQL命令串都在Global.asa中作为Application变量保存。由于我们的测试数据库是SQL Server 7.0,因此连接串指定OLEDB作为连接提供者,测试数据来自SQL Server的Northwind数据库。SQL SELECT命令从NorthWind Orders表提取7个指定的字段。
ASP程序性能测试报告(一)
时间: 2024-09-30 19:27:14
ASP程序性能测试报告(一)的相关文章
ASP程序性能测试报告
程序|性能 纲要:ASP动态生成的内容以什么方式输出效率最高?最好用哪种方法提取数据库记录集?本文测试了近20个这类ASP开发中常见的问题,测试工具所显示的时间告诉我们:这些通常可以想当然的问题不仅值得关注,而且还有出乎意料的秘密隐藏在内. 一.测试目的 本文的第一部分考察了ASP开发中的一些基本问题,给出了一些性能测试结果以帮助读者理解放入页面的代码到底对性能有什么影响.ADO是由Microsoft开发的一个通用.易用的数据库接口,事实证明通过ADO与数据库交互是ASP最重要的应用之一,在第二
ASP程序性能测试报告(七)
程序|性能 十.用哪种方法引用记录集字段值效率最高? 10.1 测试 至此为止我们一直通过名字引用记录集中的字段值.由于这种方法要求每次都必须寻找相应的字段,它的效率并不高.为证明这一点,下面这个测试中我们通过字段在集合中的索引引用它的值(ADO__08.asp): 'write data Do While Not objRS.EOF Response.Write( _ "< TR >" & _ "<
ASP程序性能测试报告(六)
程序|性能 七.最好用哪种方法提取记录集? 到目前为止我们一直通过创建Recordset对象提取记录集,但是ADO也提供了间接的记录集提取方法.下面的测试比较ADO__03.asp和直接从Connection对象创建记录集(CONN_01.asp)这两种方法: Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open Application("Conn") Set objRS = objCo
ASP程序性能测试报告(四)
程序|性能 五.使用记录集时是否应该创建单独的连接对象? 要正确地回答这个问题,我们必须分析两种不同条件下的测试:第一,页面只有一个数据库事务:第二,页面有多个数据库事务. 在前例中,我们创建了一个单独的Connection对象并将它赋给Recordset的ActiveConnection属性.然而,如ADO__03.asp所示,我们也可以直接把连接串赋给ActiveConnection属性,在脚本中初始化和配置Connection对象这一额外的步骤可以省去. objRS.ActiveConne
ASP程序性能测试报告(二)
程序|性能 三.第一次测试 在第一次测试中,我们模拟Microsoft ASP ADO示例中可找到的典型情形提取一个记录集.在这个例子(ADO__01.asp)中,我们首先打开一个连接,然后创建记录集对象.当然,这里的脚本按照本文第一部分所总结的编码规则作了优化. < % Option Explicit % >< !-- #Include file="ADOVBS.INC" -- >< % Dim objConnDim objRS Response.Wri
ASP程序性能测试报告(三)
程序|性能 四.是否应该通过包含引用ADOVBS.inc? Microsoft提供的ADOVBS.inc包含了270行代码,这些代码定义了大多数的ADO属性常量.我们这个示例只从ADOVBS.inc引用了2个常量.因此本次测试(ADO__02.asp)中我们删除了包含文件引用,设置属性时直接使用相应的数值. objRS.CursorType = 0 ' adOpenForwardOnlyobjRS.LockType = 1 ' adLockReadOnly 可以看到页面开销下
ASP程序性能测试报告(五)
六.哪种游标类型和记录锁定方式效率最高? 迄今为止的所有测试中我们只使用了"只能向前"的游标来访问记录集.ADO为记录集提供的游标还有三种类型:静态可滚动的游标,动态可滚动的游标,键集游标.每种游标都提供不同的功能,比如访问前一记录和后一记录.是否可以看到其他程序对数据的修改等.不过,具体讨论每一种游标类型的功用已经超出了本文的范围,下表是各种游标类型的一个比较性的分析. 和"只能向前"类型的游标相比,所有其它的游标类型都需要额外的开销,而且这些游标在循环内一般也要
如何增强ASP程序性能(2) (jaklin摘自Yesky)
程序|性能 如何增强ASP程序性能(2) 2000-08-11· 编译:甘冀平·Yesky 技巧6:聪明地使用Session对象 Session在繁忙站点上使用时有几个缺陷.繁忙的意思是:站点上每秒有上百的页面被请求,或者同时有上千的访问用户.这个技巧对于那些要求水平扩展强的站点非常重要,也就是指这些站点:它们利用多个服务器完成数据装载或者处理大量容错.对于小型站点,比如内部网Intranet,Session是非常值得提倡的. 再
如何增强ASP程序性能(1)
程序|性能 如何增强ASP程序性能(1) 2000-08-10· 甘冀平·Yesky 简介 性能是一个很重要的特征.你需要事先设计好性能指标,否则日后就要为此重新编写程序.就是说:要设想好怎样最佳化地执行ASP程序? 本文提出了一些优化ASP应用和VBScript的技巧,许多技巧和缺陷都经过了研讨.这里列出的建议已经在http://www.microsoft.com 和其他站点上进行了测试,都工作得非常好.本文假设你具备ASP开发的基本知识,包括VBScript或者JScript,ASP应用程序