·您的位置: 首页 » 资源教程 » 编程开发 » ASP » ASP中几条语句运行速度的测试

ASP中几条语句运行速度的测试

类别: ASP教程  评论数:0 总得分:0
程序运行速度试验结果:
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 i=1 to 10000
rs.addnew
rs("名称")="阿余A"
rs.update
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"


ttt1=now()
for i=1 to 10000
sql=" INSERT INTO user (名称) VALUES(\'阿余B\')"
conn.execute sql,0,-1
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"


%>

下面的程序结果说明RS新增记录较快,而删除较慢,用CONN新增慢,但删除很快。
运行的结果为:
、3.00000007264316:
、7.99999998416752:
、1.99999983888119:
、0:
后来用RS新增记录5000条,并用CONN删除这5000条, 结果为:
、17.000000202097:
、1.00000023376197:
程序为:
<!--#include file="filetou.asp"-->
<%
dim tttt1,ttt2
ttt1=now()
sql ="SELECT 名称 from user where id=0"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.Open sql,conn,1,3
for i=1 to 1000
rs.addnew
rs("名称")="阿余A"
rs.update
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"


ttt1=now()
for i=1 to 1000
sql=" INSERT INTO user (名称) VALUES(\'阿余B\')"
conn.execute sql,0,-1
next
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"

ttt1=now()
sql ="SELECT 名称 from user where 名称=\'阿余A\'"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.Open sql,conn,1,3
do while not rs.eof
rs.delete
rs.update
rs.move 0,1
loop
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"


ttt1=now()
sql ="delete from user where 名称=\'阿余B\'"
conn.execute sql,0,-1
ttt2=now()
tou=ttt2-ttt1
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"

%>
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1