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运行的结果为:
264、3.00000007264316:
265、7.99999998416752:
266、1.99999983888119:
267、0:
268后来用RS新增记录5000条,并用CONN删除这5000条, 结果为:
269、17.000000202097:
270、1.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%>
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运行的结果为:
264、3.00000007264316:
265、7.99999998416752:
266、1.99999983888119:
267、0:
268后来用RS新增记录5000条,并用CONN删除这5000条, 结果为:
269、17.000000202097:
270、1.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%>