详细信息
所在位置:网站建设 > 企业上网专区 > 网络基础知识 > 详细信息

网站建设技术篇-是否应避免使用eof

2007-8-22 16:31:31
标签: ASP优化 执行效率 网站优化

我们在操作数据库,循环记录并打印在网页上的时候,通常通过判断 记录游标是否到达最后一条记录之后来决定是否结束循环,以ASP代码为例
while not rst.eof
    response.Write("1")
    rst.movenext
wend
可以看出,上面的循环体每循环一次都需要做一次 eof 判断。从理论上分析,当有大量记录循环时,应该会给服务器带来较大负担。如果能够避免使用eof的话,是否能够获得更好的效率呢?俗话说:实践出真知。下面进行了一下测试,来比较一下执行速度。
测试环境:ASP    数据库:Access    记录数:3000条   
代码分别如下:
第一种方式:采用eof判断
for j=0 to 100
    set rst=server.CreateObject("adodb.recordset")
 sql="select * from biao"
    rst.open sql,conn,1,1
 while not rst.eof
 response.Write("1")
 rst.movenext
 wend
    rst.close
 set rst=nothing
next


第二种方式:采用先获得记录数再循环
for j=0 to 100
    set rst=server.CreateObject("adodb.recordset")
 sql="select * from biao"
 rst.open sql,conn,1,1
 c=rst.recordcount
 for i=1 to c
 response.Write("1")
 rst.movenext
 next
 rst.close
 set rst=nothing
next

为了能减少误差,在循环体外部分别又循环了50次和100次

以下是测试结果   单位 秒
第一种方式                第二种方式
外部循环50次          
03.8125                      03.5938
03.7969                      03.5313
03.8750                      03.5156
03.8438                      03.5313
03.8125                      03.5313
外部循环100次          外部循环100次
07.5781                      07.4531
07.5625                      08.1875
07.6563                      07.3125
07.5625                      06.9844
07.6094                      07.0469
07.6719                      07.0313
07.6875                      06.9531
07.8438                      06.9844

根据结果,第二种方式确实执行更快一些,不过对于大多数的企业网站来说,一般产品记录不会超过1000条,在这样的数据量下,这两种方式区别就很小了。

作者:中国信息网网站建设
版权所有,转载请以链接形式注明作者及原始出处。

 

发表评论
*名称:
*正文:
 

网站基础建设
    域名注册
    虚拟主机
    企业邮局
    网站建设
  
    800商务平台
  
    点金商务引擎

    网站推广
中国信息网(c)2003-2005 版权所有 运营单位:联信信息科技有限公司  联系电话:0532-83864605
本站中文域名:中国信息网.biz
  备案号:鲁ICP备05004362
3G中国