1
程序运行速度试验结果:
2
1。作相同的分支条件判断:IF 比 SELECT慢。
3
用以下程序测试:
4
<%
5
dim tttt1,ttt2
6
session("ii")=0
7
for sn=0 to 5
8
ttt1=now()
9
for 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
23
next
24
ttt2=now()
25
tou=ttt2-ttt1
26
Response.Write sn&"、"&tou*24*60*60&"<br>"
27
next
28
29
for sn=0 to 5
30
ttt1=now()
31
for 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
42
next
43
ttt2=now()
44
tou=ttt2-ttt1
45
Response.Write sn&"、"&tou*24*60*60&"<br>"
46
next
47
48
%>
49
2, 如果把上例中的SESSION对象改为用普通的变量存。速度会快差不多8倍
50
3,进行字符串连接时往中间加入相同多的字符串,基数越大,越慢。
51
通过下面的程序测试:
52
<%
53
dim tttt1,ttt2
54
session("ii")=0
55
for sn=0 to 5
56
ttt1=now()
57
' txt=""
58
for i=0 to 10000
59
txt="a"&txt
60
next
61
ttt2=now()
62
tou=ttt2-ttt1
63
Response.Write sn&"、"&tou*24*60*60&"<br>"
64
next
65
%>
66
进行同样长字节的字符连接时,汉字比英文快4倍,通过下面的程序测试
67
<%
68
69
dim tttt1,ttt2
70
for sn=0 to 5
71
ttt1=now()
72
txt=""
73
for i=0 to 20000
74
txt="人"&txt
75
next
76
ttt2=now()
77
tou=ttt2-ttt1
78
Response.Write sn&"、"&tou*24*60*60&"<br>"
79
next
80
81
txt=""
82
for sn=0 to 5
83
ttt1=now()
84
txt=""
85
for i=0 to 20000
86
txt="aa"&txt
87
next
88
ttt2=now()
89
tou=ttt2-ttt1
90
Response.Write sn&"、"&tou*24*60*60&"<br>"
91
next
92
93
%>
94
用FOR 循环比DO WHILE循环要快得多,用下面的程序测试,虽然FOR循环中要多一个变量,
95
<%
96
dim tttt1,ttt2
97
98
for sn=0 to 5
99
ttt1=now()
100
i=0
101
do while i<=100000
102
i=i+1
103
loop
104
ttt2=now()
105
tou=ttt2-ttt1
106
Response.Write sn&"、"&tou*24*60*60&"<br>"
107
next
108
109
for sn=0 to 5
110
ttt1=now()
111
ii=0
112
for i=0 to 100000
113
ii=ii+1
114
next
115
ttt2=now()
116
tou=ttt2-ttt1
117
Response.Write sn&"、"&tou*24*60*60&"<br>"
118
next
119
%>
120
定义5000个一个字符的SESSION并不比定义5000个有5000个字符串长的SESSION少花很多时间,两者时间差仅为近一倍,用一秒多钟。倒是生成这个5000个字符长的变量花了不少的时间,<%
121
dim tttt1,ttt2
122
c="a"
123
for sn=0 to 5
124
125
session.abandon
126
ttt1=now()
127
for i=0 to 5000
128
session("s"&i)=c
129
next
130
ttt2=now()
131
tou=ttt2-ttt1
132
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
133
next
134
135
for i=0 to 5000
136
c="a"&c
137
next
138
139
for sn=0 to 5
140
session.abandon
141
ttt1=now()
142
for i=0 to 5000
143
session("s"&i)=c
144
next
145
ttt2=now()
146
tou=ttt2-ttt1
147
Response.Write sn&"、"&tou*24*60*60&":" &session("s"&i-1)&"<br>"
148
next
149
150
151
%>
152
153
154
这段程序从SN=3起就很慢,而前面非常快
155
<!--#include file="filetou.asp"-->
156
<%
157
dim tttt1,ttt2
158
for sn=0 to 5
159
ttt1=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
167
next
168
ttt2=now()
169
tou=ttt2-ttt1
170
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
171
next
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
183
dim tttt1,ttt2
184
for sn=0 to 5
185
ttt1=now()
186
for i=1 to 700
187
rs("名称")="阿余"
188
rs.update
189
rs.movefirst
190
next
191
ttt2=now()
192
tou=ttt2-ttt1
193
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
194
next
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
203
dim tttt1,ttt2
204
205
for sn=0 to 5
206
ttt1=now()
207
for i=1 to 700
208
rs("名称")="阿余"
209
rs.update
210
rs.movefirst
211
next
212
ttt2=now()
213
tou=ttt2-ttt1
214
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
215
next
216
217
for sn=0 to 5
218
ttt1=now()
219
for i=1 to 700
220
SQL="UPDATE user set 名称='阿余' where 名称='阿余'"
221
conn.execute sql,0,-1
222
next
223
ttt2=now()
224
tou=ttt2-ttt1
225
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
226
next
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
237
dim tttt1,ttt2
238
239
ttt1=now()
240
for i=1 to 10000
241
rs.addnew
242
rs("名称")="阿余A"
243
rs.update
244
next
245
ttt2=now()
246
tou=ttt2-ttt1
247
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
248
249
250
ttt1=now()
251
for i=1 to 10000
252
sql=" INSERT INTO user (名称) VALUES('阿余B')"
253
conn.execute sql,0,-1
254
next
255
ttt2=now()
256
tou=ttt2-ttt1
257
Response.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
<%
274
dim tttt1,ttt2
275
ttt1=now()
276
sql ="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
283
next
284
ttt2=now()
285
tou=ttt2-ttt1
286
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
287
288
289
ttt1=now()
290
for i=1 to 1000
291
sql=" INSERT INTO user (名称) VALUES('阿余B')"
292
conn.execute sql,0,-1
293
next
294
ttt2=now()
295
tou=ttt2-ttt1
296
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
297
298
299
300
301
ttt1=now()
302
sql ="SELECT 名称 from user where 名称='阿余A'"
303
Set rs=Server.CreateObject("ADODB.RecordSet")
304
rs.Open sql,conn,1,3
305
do while not rs.eof
306
rs.delete
307
rs.update
308
rs.move 0,1
309
loop
310
ttt2=now()
311
tou=ttt2-ttt1
312
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
313
314
315
ttt1=now()
316
sql ="delete from user where 名称='阿余B'"
317
conn.execute sql,0,-1
318
ttt2=now()
319
tou=ttt2-ttt1
320
Response.Write sn&"、"&tou*24*60*60&":"&session("s"&i-1)&"<br>"
321
%>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321
