柔情似水 发表于 2015-1-16 22:11:39

ASP网页编程之ASP中几条语句运转速率的测试

结论:和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版会好点吧

小妖女 发表于 2015-1-18 22:14:58

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

老尸 发表于 2015-1-24 17:15:49

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

第二个灵魂 发表于 2015-2-2 11:27:52

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

谁可相欹 发表于 2015-2-7 19:07:27

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

金色的骷髅 发表于 2015-2-23 02:03:48

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

分手快乐 发表于 2015-3-7 05:57:29

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

飘灵儿 发表于 2015-3-14 14:02:24

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

山那边是海 发表于 2015-3-21 09:44:28

Session:这个存储跟客户端会话过程的数据,默认20分钟失效
页: [1]
查看完整版本: ASP网页编程之ASP中几条语句运转速率的测试