时间以毫秒为单位。测试脚本调用每个页面1300次以上,运行时间约20小时,以下显示的时间是会话的平均TTLB.请记住,和第一部分一样,我们只关心代码的效率,而不是它的可伸缩性或服务器性能。
同时请注意我们启用了服务器的缓冲。另外,为了让所有的文件名字长度相同,有的文件名字中嵌入了一个或多个下划线。
三、第一次测试
在第一次测试中,我们模拟Microsoft ASP ADO示例中可找到的典型情形提取一个记录集。在这个例子(ADO__01.asp)中,我们首先打开一个连接,然后创建记录集对象。当然,这里的脚本按照本文第一部分所总结的编码规则作了优化。
< % Option Explicit % > < !-- #Include file="ADOVBS.INC" -- > < % Dim objConn Dim objRS Response.Write( _ "< HTML >< HEAD >" & _ "< TITLE >ADO Test< /TITLE >" & _ "< /HEAD >< BODY >" _ ) Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open Application("Conn") Set objRS = Server.CreateObject("ADODB.Recordset") objRS.ActiveConnection = objConn objRS.CursorType = adOpenForwardOnly objRS.LockType = adLockReadOnly objRS.Open Application("SQL") If objRS.EOF Then Response.Write("No Records Found") Else ''write headings Response.Write( _ "< TABLE BORDER=1 >" & _ "< TR >" & _ "< TH >OrderID< /TH >" & _ "< TH >CustomerID< /TH >" & _ "< TH >EmployeeID< /TH >" & _ "< TH >OrderDate< /TH >" & _ "< TH >RequiredDate< /TH >" & _ "< TH >ShippedDate< /TH >" & _ "< TH >Freight< /TH >" & _ "< /TR >" _ ) ''write data Do While Not objRS.EOF Response.Write( _ "< TR >" & _ "< TD >" & objRS("OrderID") & "< /TD >" & _ "< TD >" & objRS("CustomerID") & "< /TD >" & _ "< TD >" & objRS("EmployeeID") & "< /TD >" & _ "< TD >" & objRS("OrderDate") & "< /TD >" & _ "< TD >" & objRS("RequiredDate") & "< /TD >" & _ "< TD >" & objRS("ShippedDate") & "< /TD >" & _ "< TD >" & objRS("Freight") & "< /TD >" & _ "< /TR > " _ ) objRS.MoveNext Loop Response.Write("< /TABLE >") End If objRS.Close objConn.Close Set objRS = Nothing Set objConn = Nothing Response.Write("< /BODY >< /HTML >") % >
|
下面是测试结果:
我们来看一下各栏数字的含义:
0返回0个记录的页面所需要的TTLB(毫秒)。在所有的测试中,该值被视为生成页面本身(包括创建对象)的时间开销,不包含循环访问记录集数据的时间。
25以毫秒计的提取和显示25个记录的TTLB
tot time/25"25"栏的TTLB除以25,它是每个记录的总计平均时间开销。
disp time/25"25"栏的TTLB减去"0"栏的TTLB,然后除以25.该值反映了在循环记录集时显示单个记录所需时间。
250提取和显示250个记录的TTLB.
tot time/250"250"栏的TTLB除以25,该值代表单个记录的总计平均时间开销。
disp time/250"250"栏的TTLB减去"0"栏的TTLB,再除以250.该值反映了在循环记录集时显示单个记录所需时间。
上面的测试结果将用来同下一个测试结果比较。
四、是否应该通过包含引用ADOVBS.inc?
Microsoft提供的ADOVBS.inc包含了270行代码