快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

ASP程序性能测试报告(六)

七、最好用哪种方式提取记录集?

   到目前为止我们一直通过创建Recordset对象提取记录集,但是ADO也提供了间接的记录集提取方式。下面的测试比较ADO__03.asp和直接从Connection对象创建记录集(CONN_01.asp)这两种方式:

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open Application("Conn")

Set objRS = objConn.Execute(Application("SQL"))

   可以看到页面开销略有增加,单个记录的显示时间没有变化。

   下面我们再来看看从Command对象直接创建记录集对象(CMD__02.asp):

Set objCmd = Server.CreateObject("ADODB.Command")
objCmd.ActiveConnection = Application("Conn")
objCmd.CommandText = Application("SQL")

Set objRS = objCmd.Execute

   同样,页面开销也略有增加,而单个记录的显示时间没有本质的变化。后面这两种方式在性能上的差异很小,但我们还有一个重要的问题需要考虑。

   通过Recordset类创建记录集时,我们能够以最大的灵活性控制记录集的处理方法。既然后面两种方式未能有压倒性的性能表现,我们主要还是考虑默认返回的游标类型和记录锁定方法,对于某些场合来说默认值并不一定是最理想的。

   因此,除非由于特别的原因需要选择后面两种方式,否则我们建议考虑下面的规则:

l 通过ADODB.Recordset类实例化记录集,以获得最好的性能和灵活性。

八、是否应该使用本地记录集?

   ADO答应使用本地(客户端)记录集,此时查询将提取记录集内的所有数据,查询完成后连接可以立刻关闭,以后使用本地的游标访问数据,这为释放连接带来了方便。使用本地记录集对于访问那些要求数据离线使用的远程数据服务异常重要,那么,对于普通的应用它是否同样有所帮助?

   下面我们加入CursorLocation属性,并在打开记录集之后关闭了连接(CLIENT1.asp):

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = 2 \\\' adUseClient
objRS.ActiveConnection = Application("Conn")
objRS.LockType = 1 \\\' adLockReadOnly
objRS.Open Application("SQL")
objRS.ActiveConnection = Nothing

   理论上,这种方式由于以下两个原因会对效率有所好处:第一,它避免了在记录之间移动时重复地通过连接哀求数据;第二,由于能够方便地释放连接,它减轻了资源需求。然而,从上表看起来使用本地记录集对提高效率显然没有什么帮助。这或许是因为使用本地记录集时,不管程序设置的是什么,游标总是变成静态类型。

   第6个规则如下:

l 除非确实要求记录集本地化,否则应避免使用。
返回类别: 教程
上一教程: 关于ASP图象问题的总结
下一教程: MICROSOFT 脚本编码器SCRIPT ENCODER介绍(2)全中文

您可以阅读与"ASP程序性能测试报告(六)"相关的教程:
· ASP程序性能测试报告(七)
· ASP程序性能测试报告(五)
· asp性能测试报告(转)(四)
· asp性能测试报告(转)(六)
· asp性能测试报告(转)(七)
    微笑服务 优质保证 索取样品