马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。速率|语句程序运转速率实验了局:
1。作不异的分支前提判别:IF比SELECT慢。
用以下程序测试:
<%
dimtttt1,ttt2
session("ii")=0
forsn=0to5
ttt1=now()
fori=0to300000
ifsession("ii")=0then
session("ii")=1
else
ifsession("ii")=1then
session("ii")=2
else
ifsession("ii")=2then
session("ii")=3
else
session("ii")=0
endif
endif
endif
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&"<br>"
next
forsn=0to5
ttt1=now()
fori=0to300000
selectcasesession("ii")
case0
session("ii")=1
case1
session("ii")=2
case2
session("ii")=3
case3
session("ii")=0
endselect
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&"<br>"
next
%>
2,假如把上例中的SESSION工具改成用一般的变量存。速率会快差未几8倍
3,举行字符串联接时往两头到场不异多的字符串,基数越年夜,越慢。
经由过程上面的程序测试:
<%
dimtttt1,ttt2
session("ii")=0
forsn=0to5
ttt1=now()
txt=""
fori=0to10000
txt="a"&txt
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&"<br>"
next
%>
举行一样长字节的字符毗连时,汉字比英文快4倍,经由过程上面的程序测试
<%
dimtttt1,ttt2
forsn=0to5
ttt1=now()
txt=""
fori=0to20000
txt="人"&txt
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&"<br>"
next
txt=""
forsn=0to5
ttt1=now()
txt=""
fori=0to20000
txt="aa"&txt
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&"<br>"
next
%>
用FOR轮回比DOWHILE轮回要快很多,用上面的程序测试,固然FOR轮回中要多一个变量,
<%
dimtttt1,ttt2
forsn=0to5
ttt1=now()
i=0
dowhilei<=100000
i=i+1
loop
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&"<br>"
next
forsn=0to5
ttt1=now()
ii=0
fori=0to100000
ii=ii+1
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&"<br>"
next
%>
界说5000个一个字符的SESSION其实不比界说5000个有5000个字符串长的SESSION少花良多工夫,二者工夫差仅为近一倍,用一秒多钟。却是天生这个5000个字符长的变量花了很多的工夫,<%
dimtttt1,ttt2
c="a"
forsn=0to5
session.abandon
ttt1=now()
fori=0to5000
session("s"&i)=c
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next
fori=0to5000
c="a"&c
next
forsn=0to5
session.abandon
ttt1=now()
fori=0to5000
session("s"&i)=c
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next
%>
这段程序从SN=3起就很慢,而后面十分快
<!--#includefile="filetou.asp"-->
<%
dimtttt1,ttt2
forsn=0to5
ttt1=now()
fori=1to20
sql="SELECT称号fromuserwhere称号=阿余"
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,3
rs("称号")="阿余"
rs.update
rs.close
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next
%>
而如许就快多了。看来建工具很要花些工夫,另有,用MOVE0,1和MOVEFIRST比拟速率没有甚么不同。
<!--#includefile="filetou.asp"-->
<%
sql="SELECT称号fromuserwhere称号=阿余"
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,3
dimtttt1,ttt2
forsn=0to5
ttt1=now()
fori=1to700
rs("称号")="阿余"
rs.update
rs.movefirst
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next
%>
而这两种体例比拟,后者要慢3倍,多是后者要从头查询,但比后面的用RS建查询后又往改,改了又关,比拟,要快了不知几。
<!--#includefile="filetou.asp"-->
<%
sql="SELECT称号fromuserwhere称号=阿余"
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,3
dimtttt1,ttt2
forsn=0to5
ttt1=now()
fori=1to700
rs("称号")="阿余"
rs.update
rs.movefirst
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next
forsn=0to5
ttt1=now()
fori=1to700
SQL="UPDATEuserset称号=阿余where称号=阿余"
conn.executesql,0,-1
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
next
%>
新加一万笔记录谁快?第一种办法用31秒,后者直到超时仍未完成。不得已,少失落一个0,1000条是,后者慢一半。
<!--#includefile="filetou.asp"-->
<%
sql="SELECT称号fromuserwhereid=0"
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,3
dimtttt1,ttt2
ttt1=now()
fori=1to10000
rs.addnew
rs("称号")="阿余A"
rs.update
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
ttt1=now()
fori=1to10000
sql="INSERTINTOuser(称号)VALUES(阿余B)"
conn.executesql,0,-1
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&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:
程序为:
<!--#includefile="filetou.asp"-->
<%
dimtttt1,ttt2
ttt1=now()
sql="SELECT称号fromuserwhereid=0"
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,3
fori=1to1000
rs.addnew
rs("称号")="阿余A"
rs.update
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
ttt1=now()
fori=1to1000
sql="INSERTINTOuser(称号)VALUES(阿余B)"
conn.executesql,0,-1
next
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
ttt1=now()
sql="SELECT称号fromuserwhere称号=阿余A"
Setrs=Server.CreateObject("ADODB.RecordSet")
rs.Opensql,conn,1,3
dowhilenotrs.eof
rs.delete
rs.update
rs.move0,1
loop
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
ttt1=now()
sql="deletefromuserwhere称号=阿余B"
conn.executesql,0,-1
ttt2=now()
tou=ttt2-ttt1
Response.Writesn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
%>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |