asp性能测试第二部分(转)(十)

作者:网络 来源:佚名 更新时间:2008-04-30 08:42:39 点击:
十、用哪种方法引用记录集字段值效率最高?

10.1 测试

   至此为止我们一直通过名字引用记录集中的字段值。由于这种方法要求每次都必须寻找相应的字段,它的效率并不高。为证明这一点,下面这个测试中我们通过字段在集合中的索引引用它的值(ado__08.asp):
  'write data
   do while not objrs.eof
      response.write( _
         "< tr >" & _
         "< td >" & objrs(0) & "< /td >" & _
         "< td >" & objrs(1) & "< /td >" & _
         "< td >" & objrs(2) & "< /td >" & _
         "< td >" & objrs(3) & "< /td >" & _
         "< td >" & objrs(4) & "< /td >" & _
         "< td >" & objrs(5) & "< /td >" & _
         "< td >" & objrs(6) & "< /td >" & _
         "< /tr > " _
      )
      objrs.movenext
   loop




  



   和预期的一样,页面开销也有小小的变化(这或许是因为代码略有减少)。然而,这种方法在显示时间上的改善是相当明显的。

   在下一个测试中,我们把所有的字段分别绑定到变量(ado__09.asp):
if objrs.eof then
   response.write("no records found")
else
   'write headings
   ...
   dim fld0
   dim fld1
   dim fld2
   dim fld3
   dim fld4
   dim fld5
   dim fld6
   
   set fld0 = objrs(0)
   set fld1 = objrs(1)
   set fld2 = objrs(2)
   set fld3 = objrs(3)
   set fld4 = objrs(4)
   set fld5 = objrs(5)
   set fld6 = objrs(6)
   
   'write data
   do while not objrs.eof
      response.write( _
         "< tr >" & _
         "< td >" & fld0 & "< /td >" & _
         "< td >" & fld1 & "< /td >" & _
         "< td >" & fld2 & "< /td >" & _
         "< td >" & fld3 & "< /td >" & _
         "< td >" & fld4 & "< /td >" & _
         "< td >" & fld5 & "< /td >" & _
         "< td >" & fld6 & "< /td >" & _
         "< /tr >" _
      )
      objrs.movenext
   loop
   
   set fld0 = nothing
   set fld1 = nothing
   set fld2 = nothing
   set fld3 = nothing
   set fld4 = nothing
   set fld5 = nothing
   set fld6 = nothing
   
   response.write("< /table >")
end if




  



   这是目前为止最好的记录。请注意单个记录的显示时间已经降低到0.45毫秒以下。

   上述脚本都要求对结果记录集的构造有所了解。例如,我们在列标题中直接使用了字段名字,单独地引用各个字段值。下面这个测试中,不仅字段数据通过遍历字段集合得到,而且字段标题也用同样的方式得到,这是一种更为动态的方案(ado__10.asp)。
if objrs.eof then
   response.write("no records found")
else
   'write headings   
   response.write("< table border=1 >< tr >")
   for each objfld in objrs.fields
      response.write("< th >" & objfld.name & "< /th >")
&