狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

提高ASP性能的最佳選擇(續(xù)3)

提高ASP性能的最佳選擇(續(xù)3)

更新時(shí)間:2024-04-11 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

引用記錄集中域值的最有效方法是什么?
  到目前為止,我都是用名字引用記錄集中的域值的。這可能是一種效率很低的方法,因?yàn)槊看握{(diào)用都需要查找域。為了證明這一點(diǎn),下面的測(cè)試就要通過記錄集中域的集合的指針來引用域(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


  正如我們所預(yù)料的,裝載時(shí)間的變化很小(差異可能是由于代碼上的輕微減少引起的)。但是這種技術(shù)在有效顯示時(shí)間上卻帶來了明顯的減少。

  在下面的例子中,我們將給每個(gè)域指定一個(gè)單獨(dú)的變量。這種方法避免了在表格循環(huán)內(nèi)的所有查找( 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


  到目前,這種方法形成的結(jié)果是最好的。每條記錄的顯示時(shí)間下降成了.45 毫秒。

  現(xiàn)在,所有測(cè)試腳本的配置都要求對(duì)結(jié)果記錄集有一些了解。比如說,我們一直在欄標(biāo)題中給域名編碼,單獨(dú)地引用這些域的值。下面的例子提供了一個(gè)動(dòng)態(tài)的解決方案,在域的集合中循環(huán),不僅得到數(shù)據(jù),也得到域的標(biāo)題(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 >")

  Next

  Response.Write("< /TR >")

  'write data

  Do While Not objRS.EOF

  Response.Write("< TR >")

  For Each objFld in objRS.Fields

  Response.Write("< TD >" & objFld.value & "< /TD >")

  Next

  Response.Write("< /TR >")

  objRS.MoveNext

  Loop

  Response.Write("< /TABLE >")

  End If


  可以看到,我們?cè)谛阅苌嫌幸粋(gè)損失,但是這個(gè)方法還是比ADO__07.asp要快一些。

  下面的測(cè)試是在最后兩個(gè)測(cè)試之間進(jìn)行一些折中。通過在一個(gè)動(dòng)態(tài)分配數(shù)組中保存域的引用,既維持了動(dòng)態(tài)的靈活性,也挽回了一些性能上的損失。

  If objRS.EOF Then

  Response.Write("No Records Found")

  Else

  Dim fldCount

  fldCount = objRS.Fields.Count

  Dim fld()

  ReDim fld(fldCount)

  Dim i

  For i = 0 to fldCount-1

  Set fld(i) = objRS(i)

  Next

  'write headings

  Response.Write("< TABLE BORDER=1 >< TR >")

  For i = 0 to fldCount-1

  Response.Write("< TH >" & fld(i).name & "< /TH >")

  Next

  Response.Write("< /TR >")

  'write data

  Do While Not objRS.EOF

  Response.Write("< TR >")

  For i = 0 to fldCount-1

  Response.Write("< TD >" & fld(i) & "< /TD >")

  Next

  Response.Write("< /TR >")

  objRS.MoveNext

  Loop

  For i = 0 to fldCount-1

  Set fld(i) = Nothing

  Next

  Response.Write("< /TABLE >")

  End If


  雖然它并不比最好值快,但是比前面的幾個(gè)例子要快了很多,并且有一個(gè)優(yōu)勢(shì)就是能夠動(dòng)態(tài)地表現(xiàn)任何記錄集。

  在下一個(gè)測(cè)試中,我們將對(duì)以前的方案做一個(gè)徹底的改變,使用記錄集的GetRows指令創(chuàng)建一個(gè)循環(huán)用的數(shù)組,而不是在記錄集本身進(jìn)行循環(huán)。注意,調(diào)用GetRows之后,立刻就將記錄集設(shè)置為Nothing,這樣就能更快地釋放系統(tǒng)資源。另外還要注意數(shù)組的第一個(gè)維數(shù)代表域,第二個(gè)維數(shù)代表行 ( ADO__12.asp ):

  If objRS.EOF Then

  Response.Write("No Records Found")

  objRS.Close

  Set objRS = Nothing

  Else

  'write headings

  ...

  'set array

  Dim arrRS

  arrRS = objRS.GetRows

  'close recordset early

  objRS.Close

  Set objRS = Nothing

  'write data

  Dim numRows

  Dim numFlds

  Dim row

  Dim fld

  numFlds = Ubound(arrRS, 1)

  numRows = Ubound(arrRS, 2)

  For row= 0 to numRows

  Response.Write("< TR >")

  For fld = 0 to numFlds

  Response.Write("< TD >" & arrRS(fld, row) & "< /TD >")

  Next

  Response.Write("< /TR >")

  Next

  Response.Write("< /TABLE >")

  End If


  通過使用GetRows 指令,就可以獲取整個(gè)記錄集并將其裝載到數(shù)組中。當(dāng)恢復(fù)特別大的記錄集時(shí),這種方法有可能會(huì)造成資源問題,但是數(shù)據(jù)的循環(huán)快多了,因?yàn)轭愃朴贛oveNext 的函數(shù)調(diào)用和EOF 的檢測(cè)都可以取消了。

  不過速度的提升確實(shí)是有代價(jià)的,因?yàn)橛涗浖脑獢?shù)據(jù)不再與數(shù)據(jù)在一起。圍繞這個(gè)問題,我在調(diào)用GetRows之前用記錄集來恢復(fù)標(biāo)題名。另外還可以提前提取數(shù)據(jù)類型和其它信息。還要注意,在我們的測(cè)試中,性能上的優(yōu)勢(shì)只有在使用大一些的記錄集時(shí)才能看到。

  在這部分最后的測(cè)試中,我們更進(jìn)一步,使用記錄集的GetString 指令。這個(gè)方法將整個(gè)記錄集提取到一個(gè)大的字符串中,允許你指定自己的分隔符( ADO__13.asp ):

  If objRS.EOF Then

  Response.Write("No Records Found")

  objRS.Close

  Set objRS = Nothing

  Else

  'write headings

  ...

  'set array

  Dim strTable

  strTable = objRS.GetString (2, , "< /TD >< TD >", "< /TD >< /TR >< TR >< TD >")

  'close recordset early

  objRS.Close

  Set objRS = Nothing

  Response.Write(strTable & "< /TD >< /TR >< /TABLE >")

  End If


  雖然這種方法已經(jīng)接近了最高水平,但是它只適合于最簡(jiǎn)單的設(shè)計(jì),因?yàn)樗揪筒荒軕?yīng)用于數(shù)據(jù)的特殊情況。

觀察
  在我們開始這套測(cè)試之前,執(zhí)行每條記錄的時(shí)間一直在.83 毫秒左右震動(dòng)。這套測(cè)試中的大多數(shù)方法都將這個(gè)數(shù)字減少了一半。雖然有些方法明顯地提供了更快的速度,但是代價(jià)是靈活性的降低。

  下面的規(guī)則是以重要程度為順序的:

* 當(dāng)記錄集中的值不需要用一種特殊方式來對(duì)待并且能夠格式化為一種統(tǒng)一的格式時(shí),使用GetString方法來提取數(shù)據(jù)。
* 當(dāng)你在設(shè)計(jì)上需要更大的靈活性,但是又不需要用記錄集的元數(shù)據(jù)進(jìn)行工作,使用GetRows 方法將數(shù)據(jù)提取到一個(gè)數(shù)組中。
* 當(dāng)你需要設(shè)計(jì)的靈活性和元數(shù)據(jù)時(shí),在進(jìn)入一個(gè)數(shù)據(jù)恢復(fù)的循環(huán)之前,將你的域約束在本地變量中。避免用名字引用域。
使用臨時(shí)字符串可以較好地代替緩沖器嗎?
  這是針對(duì)我上一篇文章提交的一些注解所引發(fā)的一個(gè)小小的離題。要討論的問題是圍繞著緩沖器的使用及使用臨時(shí)字符串作為替代來收集輸出,這樣就允許Response.Write 只調(diào)用一次。為了測(cè)試,我從ADO_11.asp的代碼開始,將結(jié)果附加到一個(gè)字符串中,而不是在每個(gè)循環(huán)都調(diào)用Response.Write,當(dāng)整個(gè)操作都結(jié)束后,在字符串上調(diào)用Response.Write ( STR__01.asp ):

  Dim strTable

  strTable = ""

  'write headings

  strTable = strTable & "< TABLE BORDER=1 >< TR >"

  For i = 0 to fldCount-1

  strTable = strTable & "< TH >" & fld(i).name & "< /TH >"

  Next

  strTable = strTable & "< /TR >"

  'write data

  Do While Not objRS.EOF

  strTable = strTable & "< TR >"

  For i = 0 to fldCount-1

  strTable = strTable & "< TD >" & fld(i) & "< /TD >"

  Next

  strTable = strTable & "< /TR >"

  objRS.MoveNext

  Loop

  For i = 0 to fldCount-1

  Set fld(i) = Nothing

  Next

  strTable = strTable & "< /TABLE >"

  Response.Write(strTable)


  看起來執(zhí)行得不是很好。也許正象許多人建議的,我們應(yīng)該用Space 指令為這個(gè)字符串指定一些空間,這樣它就不需要在循環(huán)期間總是為自己重新分配空間( STR__02.asp ):

  Dim strTable

  strTable = Space(10000)


  也許Space 指令并不象建議的那樣工作。我們最后的規(guī)則是:不要用臨時(shí)字符串來收集輸出。


溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
在线综合亚洲| 欧美巨大另类极品videosbest| eeuss鲁片一区二区三区在线看 | 日韩不卡一二三区| 夜夜嗨av一区二区三区中文字幕| 一区二区中文视频| 国产精品伦一区二区三级视频| 国产欧美日韩精品一区| 久久午夜羞羞影院免费观看| 久久综合九色综合欧美就去吻| www国产精品av| 国产亚洲一区二区三区在线观看| 久久久午夜精品理论片中文字幕| 久久久亚洲精华液精华液精华液| 欧美精品一区二区久久婷婷| 2017欧美狠狠色| 国产欧美一区二区精品仙草咪| 国产性色一区二区| 亚洲色图视频网| 亚洲1区2区3区视频| 日韩福利电影在线观看| 极品少妇xxxx精品少妇| 成人美女视频在线看| 91麻豆精品秘密| 亚洲精品乱码久久久久久蜜桃麻豆 | 中文字幕一区二区三区四区| 国产精品麻豆久久久| 亚洲成人av福利| 国内成人免费视频| 91丝袜美腿高跟国产极品老师| 欧美日韩综合| 久久久久久久久久久一区| 欧美日本在线视频| 国产日韩欧美在线一区| 亚洲精品日日夜夜| 久久 天天综合| 欧美另类一区| 欧美v日韩v国产v| 欧美极品另类videosde| 亚洲成人免费观看| 国产成a人亚洲| 亚洲精品123区| 欧美欧美午夜aⅴ在线观看| 国产午夜精品理论片a级大结局| 亚洲最大的成人av| 国产aⅴ综合色| 国产毛片久久| 欧美成人一区二区三区片免费| 亚洲欧美视频一区| 国产在线一区二区综合免费视频| 欧美激情91| 欧美性猛片aaaaaaa做受| 国产亚洲成av人在线观看导航 | 精品无人码麻豆乱码1区2区 | 国产精品一级二级三级| 黄色国产精品| 欧美一级电影网站| 亚洲综合在线观看视频| 成人性生交大片免费看中文| 亚洲综合欧美日韩| 欧美激情资源网| 国产一区二区久久| 午夜一区不卡| 欧美国产精品专区| 狠狠色狠狠色综合| 国产乱人伦精品一区二区| 久久丝袜美腿综合| 国产美女在线精品| 久久亚洲二区| 综合久久国产九一剧情麻豆| 成人亚洲一区二区一| 一本高清dvd不卡在线观看| 国产精品福利一区二区三区| 国产不卡视频在线观看| 先锋影音久久久| 中文字幕一区免费在线观看| 成人高清视频免费观看| 欧美私人免费视频| 香蕉久久一区二区不卡无毒影院| 好吊视频一区二区三区四区| 欧美一级片免费看| 久久成人麻豆午夜电影| 模特精品在线| 亚洲黄色免费网站| 国产一区自拍视频| 国产午夜精品一区二区三区四区| 国产成人免费视频网站| 欧美日精品一区视频| 午夜免费久久看| 一区二区三区三区在线| 亚洲欧美日韩综合aⅴ视频| 欧美韩日精品| 国产色爱av资源综合区| av高清久久久| 久久久国产综合精品女国产盗摄| 成人永久免费视频| 91.com视频| 国产精品亚洲综合一区在线观看| 欧美日韩一区二区三区在线| 精品亚洲porn| 在线播放亚洲一区| 国产最新精品精品你懂的| 欧美日韩视频专区在线播放| 麻豆精品国产传媒mv男同| 日本乱码高清不卡字幕| 欧美aaa在线| 欧美日韩小视频| 国产一级精品在线| 欧美成人r级一区二区三区| 不卡视频一二三四| 久久久久久久网| 亚洲视屏一区| 亚洲免费伊人电影| 久久久久久久久久码影片| 日本午夜一区二区| 欧美高清精品3d| 不卡视频一二三四| 1024亚洲合集| 久久本道综合色狠狠五月| 久久99国产精品久久99果冻传媒| 欧美人妇做爰xxxⅹ性高电影| 国产成人在线电影| 国产日韩视频一区二区三区| 1024成人| 日本va欧美va精品| 日韩欧美中文字幕精品| 91猫先生在线| 亚洲成人精品影院| 欧美日韩国产片| 99免费精品视频| 亚洲色图欧洲色图| 欧美日韩一区二区三区四区五区| 国产精品原创巨作av| 亚洲国产精品v| 久久久国产精品一区二区三区| 国产精品一区一区三区| 欧美国产日韩一二三区| 亚洲在线一区| 国产99久久久精品| 日韩理论在线观看| 欧美色偷偷大香| 午夜精品久久久久99热蜜桃导演| 亚洲一区二区精品3399| 538在线一区二区精品国产| 国产亚洲一级| 国产成人一级电影| 最新成人av在线| 欧美日韩一区国产| 好看的日韩av电影| 国产乱人伦偷精品视频不卡| 国产精品大尺度| 欧美日本国产视频| 在线精品福利| 国产99久久久国产精品免费看| 亚洲视频1区2区| 日韩欧美亚洲另类制服综合在线| 亚洲国产精品一区在线观看不卡| 精品中文字幕一区二区| 国产精品久久久久精k8| 在线成人小视频| 国产视频亚洲| 99re6这里只有精品视频在线观看| 亚洲高清视频中文字幕| 2021国产精品久久精品| 欧美在线看片a免费观看| 欧美网站在线| 国产精品资源网| 天堂成人免费av电影一区| 亚洲国产精品av| 日韩午夜小视频| 久久综合狠狠| av成人天堂| 欧美精品成人一区二区在线观看| 久久国产人妖系列| 亚洲午夜成aⅴ人片| 国产精品无遮挡| 日韩精品在线看片z| 91精品福利视频| 中文一区在线| 在线日本成人| 午夜天堂精品久久久久| 成人午夜又粗又硬又大| 卡一卡二国产精品| 日韩精品电影在线观看| 亚洲综合色成人| 国产精品久久久久毛片软件| 精品国产乱码久久久久久蜜臀| 欧美日韩亚洲不卡| 色婷婷久久99综合精品jk白丝| 国产欧美韩日| 亚洲免费精品| 亚洲国产婷婷| 国产一区二区中文字幕免费看| av不卡免费电影| 9人人澡人人爽人人精品| 国产精品一线二线三线精华| 极品少妇xxxx精品少妇| 精品亚洲成a人在线观看| 免费的成人av| 美国一区二区三区在线播放|