ASP程序运行速度测试

  1程序运行速度试验结果:
  21。作相同的分支条件判断:IF  比  SELECT慢。
  3用以下程序测试:
  4<%
  5dim tttt1,ttt2
  6session("ii")=0
  7for sn=0 to 5
  8ttt1=now()
  9for i=0 to 300000
 10   if session("ii")=0 then
 11      session("ii")=1
 12   else
 13     if session("ii")=1 then
 14      session("ii")=2
 15     else
 16       if session("ii")=2 then
 17          session("ii")=3
 18        else
 19           session("ii")=0
 20         end if
 21     end if
 22   end if
 23next
 24ttt2=now()
 25tou=ttt2-ttt1
 26Response.Write sn&""&tou*24*60*60&"<br>"
 27next
 28
 29for sn=0 to 5
 30ttt1=now()
 31for i=0 to 300000
 32   select case session("ii")
 33      case 0
 34         session("ii")=1
 35      case 1
 36         session("ii")=2
 37       case 2
 38         session("ii")=3
 39       case 3
 40         session("ii")=0
 41   end select
 42next
 43ttt2=now()
 44tou=ttt2-ttt1
 45Response.Write sn&""&tou*24*60*60&"<br>"
 46next
 47
 48%>
 492, 如果把上例中的SESSION对象改为用普通的变量存。速度会快差不多8倍
 503,进行字符串连接时往中间加入相同多的字符串,基数越大,越慢。
 51通过下面的程序测试:
 52<%
 53dim tttt1,ttt2
 54session("ii")=0
 55for sn=0 to 5
 56ttt1=now()
 57'  txt=""
 58   for i=0 to 10000
 59       txt="a"&txt
 60   next
 61ttt2=now()
 62tou=ttt2-ttt1
 63Response.Write sn&""&tou*24*60*60&"<br>"
 64next
 65%>
 66进行同样长字节的字符连接时,汉字比英文快4倍,通过下面的程序测试
 67<%
 68
 69dim tttt1,ttt2
 70for sn=0 to 5
 71ttt1=now()
 72  txt=""
 73   for i=0 to 20000
 74          txt=""&txt
 75   next
 76ttt2=now()
 77tou=ttt2-ttt1
 78Response.Write sn&""&tou*24*60*60&"<br>"
 79next
 80
 81txt=""
 82for sn=0 to 5
 83ttt1=now()
 84  txt=""
 85   for i=0 to 20000
 86          txt="aa"&txt
 87   next
 88ttt2=now()
 89tou=ttt2-ttt1
 90Response.Write sn&""&tou*24*60*60&"<br>"
 91next
 92
 93%>
 94用FOR 循环比DO  WHILE循环要快得多,用下面的程序测试,虽然FOR循环中要多一个变量,
 95<%
 96dim tttt1,ttt2
 97
 98for sn=0 to 5
 99ttt1=now()
100  i=0
101   do while i<=100000
102      i=i+1
103   loop
104ttt2=now()
105tou=ttt2-ttt1
106Response.Write sn&""&tou*24*60*60&"<br>"
107next
108
109for sn=0 to 5
110ttt1=now()
111   ii=0
112   for i=0 to 100000
113    ii=ii+1
114   next
115ttt2=now()
116tou=ttt2-ttt1
117Response.Write sn&""&tou*24*60*60&"<br>"
118next
119%>
120定义5000个一个字符的SESSION并不比定义5000个有5000个字符串长的SESSION少花很多时间,两者时间差仅为近一倍,用一秒多钟。倒是生成这个5000个字符长的变量花了不少的时间,<%
121dim tttt1,ttt2
122c="a"
123for sn=0 to 5
124
125session.abandon
126ttt1=now()
127   for i=0 to 5000
128       session("s"&i)=c
129    next
130ttt2=now()
131tou=ttt2-ttt1
132Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
133next
134
135for i=0 to 5000
136  c="a"&c
137next
138
139for sn=0 to 5
140session.abandon
141ttt1=now()
142   for i=0 to 5000
143       session("s"&i)=c
144    next
145ttt2=now()
146tou=ttt2-ttt1
147Response.Write sn&""&tou*24*60*60&":"  &session("s"&i-1)&"<br>"
148next
149
150
151%>
152
153
154这段程序从SN=3起就很慢,而前面非常快
155<!--#include file="filetou.asp"-->
156<%
157dim tttt1,ttt2
158for sn=0 to 5
159ttt1=now()
160  for i=1 to  20
161   sql ="SELECT 名称  from user where 名称='阿余'"
162   Set rs=Server.CreateObject("ADODB.RecordSet")                        
163   rs.Open sql,conn,1,3
164   rs("名称")="阿余"
165   rs.update
166   rs.close
167next
168ttt2=now()
169tou=ttt2-ttt1
170Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
171next
172
173
174%>
175
176
177而这样就快多了。看来建对象很要花些时间,还有,用MOVE 0,1 和  MOVEFIRST 相比速度没有什么差别。
178<!--#include file="filetou.asp"-->
179<%
180   sql ="SELECT 名称  from user where 名称='阿余'"
181   Set rs=Server.CreateObject("ADODB.RecordSet")                        
182   rs.Open sql,conn,1,3
183dim tttt1,ttt2 
184for sn=0 to 5
185ttt1=now()
186  for i=1 to  700
187   rs("名称")="阿余"
188   rs.update
189   rs.movefirst
190next
191ttt2=now()
192tou=ttt2-ttt1
193Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
194next
195%>
196
197而这两种方式相比,后者要慢3倍,可能是后者要重新查询,但比前面的用RS建查询后又去改,改了又关,相比,要快了不知多少。
198<!--#include file="filetou.asp"-->
199<%
200   sql ="SELECT 名称  from user where 名称='阿余'"
201   Set rs=Server.CreateObject("ADODB.RecordSet")                        
202   rs.Open sql,conn,1,3
203dim tttt1,ttt2 
204
205for sn=0 to 5
206ttt1=now()
207  for i=1 to  700
208   rs("名称")="阿余"
209   rs.update
210   rs.movefirst
211next
212ttt2=now()
213tou=ttt2-ttt1
214Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
215next
216
217for sn=0 to 5
218ttt1=now()
219  for i=1 to  700
220     SQL="UPDATE user set 名称='阿余'  where 名称='阿余'"
221     conn.execute sql,0,-1
222next
223ttt2=now()
224tou=ttt2-ttt1
225Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
226next
227
228%>
229
230
231新加一万条记录谁快?第一种方法用31秒,后者直到超时仍未完成。不得已,少掉一个0,1000条是,后者慢一半。
232<!--#include file="filetou.asp"-->
233<%
234   sql ="SELECT 名称  from user where id=0"
235   Set rs=Server.CreateObject("ADODB.RecordSet")                        
236   rs.Open sql,conn,1,3
237dim tttt1,ttt2 
238
239ttt1=now()
240  for i=1 to  10000
241   rs.addnew
242   rs("名称")="阿余A"
243   rs.update
244next
245ttt2=now()
246tou=ttt2-ttt1
247Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
248
249
250ttt1=now()
251  for i=1 to  10000
252     sql=" INSERT INTO  user (名称) VALUES('阿余B')"
253     conn.execute sql,0,-1
254next
255ttt2=now()
256tou=ttt2-ttt1
257Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
258
259
260%>
261
262下面的程序结果说明RS新增记录较快,而删除较慢,用CONN新增慢,但删除很快。
263运行的结果为:
2643.00000007264316:
2657.99999998416752:
2661.99999983888119:
2670:
268后来用RS新增记录5000条,并用CONN删除这5000条, 结果为:
26917.000000202097:
2701.00000023376197:
271程序为:
272<!--#include file="filetou.asp"-->
273<%
274dim tttt1,ttt2 
275ttt1=now()
276sql ="SELECT 名称  from user where id=0"
277   Set rs=Server.CreateObject("ADODB.RecordSet")                        
278   rs.Open sql,conn,1,3
279  for i=1 to  1000
280   rs.addnew
281   rs("名称")="阿余A"
282   rs.update
283next
284ttt2=now()
285tou=ttt2-ttt1
286Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
287
288
289ttt1=now()
290  for i=1 to  1000
291     sql=" INSERT INTO  user (名称) VALUES('阿余B')"
292     conn.execute sql,0,-1
293next
294ttt2=now()
295tou=ttt2-ttt1
296Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
297
298
299
300
301ttt1=now()
302   sql ="SELECT  名称 from user where 名称='阿余A'"
303   Set rs=Server.CreateObject("ADODB.RecordSet")                        
304   rs.Open sql,conn,1,3
305do while not rs.eof
306   rs.delete
307   rs.update
308   rs.move 0,1
309  loop
310ttt2=now()
311tou=ttt2-ttt1
312Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
313
314
315ttt1=now()
316   sql ="delete from user  where 名称='阿余B'"
317    conn.execute sql,0,-1
318ttt2=now()
319tou=ttt2-ttt1
320Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
321%> 
原文地址:https://www.cnblogs.com/Dicky/p/172791.html