我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp组件/脚本 > 程序运行速度测试
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

程序运行速度测试 

作者:佚名   来源:一亩三分地   点击:   日期:2007-03-28

程序运行速度试验结果:
1。作相同的分支条件判断:IF  比  SELECT慢。
用以下程序测试:
<%
dim tttt1,ttt2
session("ii")=0
for sn=0 to 5
ttt1=now()
for i=0 to 300000
   if session("ii")=0 then
      session("ii")=1
   else
     if session("ii")=1 then
      session("ii")=2
     else
       if session("ii")=2 then
          session("ii")=3
        else
           session("ii")=0
         end if
     end if
   end if
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&"<br>"
next

for sn=0 to 5
ttt1=now()
for i=0 to 300000
   select case session("ii")
      case 0
         session("ii")=1
      case 1
         session("ii")=2
       case 2
         session("ii")=3
       case 3
         session("ii")=0
   end select
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&"<br>"
next

%>
2, 如果把上例中的SESSION对象改为用普通的变量存。速度会快差不多8倍
3,进行字符串连接时往中间加入相同多的字符串,基数越大,越慢。
通过下面的程序测试:
<%
dim tttt1,ttt2
session("ii")=0
for sn=0 to 5
ttt1=now()
'  txt=""
   for i=0 to 10000
       txt="a"&txt
   next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&"<br>"
next
%>
进行同样长字节的字符连接时,汉字比英文快4倍,通过下面的程序测试
<%

dim tttt1,ttt2
for sn=0 to 5
ttt1=now()
  txt=""
   for i=0 to 20000
          txt="人"&txt
   next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&"<br>"
next

txt=""
for sn=0 to 5
ttt1=now()
  txt=""
   for i=0 to 20000
          txt="aa"&txt
   next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&"<br>"
next

%>
用FOR 循环比DO  WHILE循环要快得多,用下面的程序测试,虽然FOR循环中要多一个变量,
<%
dim tttt1,ttt2

for sn=0 to 5
ttt1=now()
  i=0
   do while i<=100000
      i=i+1
   loop
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&"<br>"
next

for sn=0 to 5
ttt1=now()
   ii=0
   for i=0 to 100000
    ii=ii+1
   next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&"<br>"
next
%>
定义5000个一个字符的SESSION并不比定义5000个有5000个字符串长的SESSION少花很多时间,两者时间差仅为近一倍,用一秒多钟。倒是生成这个5000个字符长的变量花了不少的时间,<%
dim tttt1,ttt2
c="a"
for sn=0 to 5

session.abandon
ttt1=now()
   for i=0 to 5000
       session("s"&i)=c
    next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next

for i=0 to 5000
  c="a"&c
next

for sn=0 to 5
session.abandon
ttt1=now()
   for i=0 to 5000
       session("s"&i)=c
    next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"  &session("s"&i-1)&"<br>"
next


%>


这段程序从SN=3起就很慢,而前面非常快
<!--#include file="filetou.asp"-->
<%
dim tttt1,ttt2
for sn=0 to 5
ttt1=now()
  for i=1 to  20
   sql ="SELECT 名称  from user where 名称='阿余'"
   Set rs=Server.CreateObject("ADODB.RecordSet")                        
   rs.Open sql,conn,1,3
   rs("名称")="阿余"
   rs.update
   rs.close
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next


%>


而这样就快多了。看来建对象很要花些时间,还有,用MOVE 0,1 和  MOVEFIRST 相比速度没有什么差别。
<!--#include file="filetou.asp"-->
<%
   sql ="SELECT 名称  from user where 名称='阿余'"
   Set rs=Server.CreateObject("ADODB.RecordSet")                        
   rs.Open sql,conn,1,3
dim tttt1,ttt2
for sn=0 to 5
ttt1=now()
  for i=1 to  700
   rs("名称")="阿余"
   rs.update
   rs.movefirst
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next
%>

而这两种方式相比,后者要慢3倍,可能是后者要重新查询,但比前面的用RS建查询后又去改,改了又关,相比,要快了不知多少。
<!--#include file="filetou.asp"-->
<%
   sql ="SELECT 名称  from user where 名称='阿余'"
   Set rs=Server.CreateObject("ADODB.RecordSet")                        
   rs.Open sql,conn,1,3
dim tttt1,ttt2

for sn=0 to 5
ttt1=now()
  for i=1 to  700
   rs("名称")="阿余"
   rs.update
   rs.movefirst
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next

for sn=0 to 5
ttt1=now()
  for i=1 to  700
     SQL="UPDATE user set 名称='阿余'  where 名称='阿余'"
     conn.execute sql,0,-1
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next

%>


新加一万条记录谁快?第一种方法用31秒,后者直到超时仍未完成。不得已,少掉一个0,1000条是,后者慢一半。
<!--#include file="filetou.asp"-->
<%
   sql ="SELECT 名称  from user where id=0"
   Set rs=Server.CreateObject("ADODB.RecordSet")                        
   rs.Open sql,conn,1,3
dim tttt1,ttt2

ttt1=now()
  for

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。