亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > VBScript > 正文

vbs的字符串操作效率分析總結

2020-06-26 18:26:06
字體:
來源:轉載
供稿:網友
vbs的字符串操作一直以來就是個要害之處,特別是字符串的連接操作,在大量字符串連接操作中,系統性能會急劇下降,很是郁悶~~,
 
可vbs根本就沒有類似于StringBuilder這樣的東東,所以咱哥們只能自己想辦法優化了。
正文: 
我寫了幾段代碼做了測試,得出以下結果: 
'普通字符串連接 
StringLinkTest1() '性能最差,大約耗時20秒(最要命的是在這20秒內,整個CPU幾乎是100%滿負荷在運行) 
'普通字符串連接,但使用了臨時變量來提升效率 
StringLinkTest2() '性能令人吃驚的改善,大約耗時0.2秒 
'使用數組+Join函數處理 
StringArrayTest() '性能最佳,大約耗時0.06秒 
'本來還有個方法,是利用字典對象:Scripting.Dictionary 來操作的,但由于在大量連續使用的類方法的情況下,會直接影響效率(效率介于StringArrayTest和StringLinkTest2之間),在此就不貼了 
得出的結果就是,在vbs的字符串處理上,還是可以解決效率問題的。 
代碼如下: 
復制代碼代碼如下:

<% 
'vbs版高速字符串操作代碼演示 
'淮南子編寫 
Option explicit 
Dim StrTime,EndTime 
Dim MyString,MyArray,ArrayIndexCount,CurIndex 
Const TestNumber = 9999 '循環次數 
StrTime = Timer() 
'============測試開始============ 
'代碼執行效率 
'本人機器配置: 
'CPU: 酷睿雙核2250 CPU頻率:1.73G 
'內存: 1GB 
'請逐一開啟方法進行測試 
'StringLinkTest1() '性能最差,大約耗時20秒 
'StringLinkTest2() '性能大大改善,大約耗時0.2秒 
'StringArrayTest() '性能最佳,大約耗時0.06秒 
'============測試結束============ 
'輸出結果 
'Response.Write MyString 
EndTime = Timer() 
Response.Write "耗時:" & FormatNumber((EndTime-StrTime) * 1000,3) & " 毫秒" 
'字符串操作函數,淮南子原創 
Sub Add(Value) 
If (CurIndex >= ArrayIndexCount) Then 
ArrayIndexCount = CurIndex * 1.1 '如果欲添加項超出數組下標,則將數組容量擴增百分之10 
ReDim Preserve MyArray(ArrayIndexCount) 
End If 
MyArray(CurIndex) = Value 
CurIndex = CurIndex + 1 
End Sub 
'測試方法 
'使用數組進行字符串疊加,在所有方法中,該方法性能最佳(效率較StringLinkTest2()的方法提升了近4倍) 
Sub StringArrayTest() 
ArrayIndexCount = 20 
CurIndex = 0 
ReDim MyArray(ArrayIndexCount) 
Dim i 
For i = 0 to TestNumber 
Add "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
Next 
MyString = Join(MyArray,"") 
End Sub 
'測試方法1 
'常規的字符串連接 
Sub StringLinkTest1() 
Dim i,str 
dim a1 
a1 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
For i=0 to TestNumber 
'常規字符串連接 
Str=(Str&a1) 
Next 
MyString = Str 
End Sub 
'測試方法2 
'在常規的字符串連接方式中,使用臨時變量來提速 ,效率較StringLinkTest1()的方法提升了近100倍 
Sub StringLinkTest2() 
Dim i,str,a1,TmpString 
a1 = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
For i=0 to TestNumber 
'使用臨時變量提速 
TmpString = (TmpString & a1) 
'每二百次則進行一次累計 
If i mod 200 = 0 Then 
'保存臨時變量值 
Str = (Str & TmpString) 
'清空臨時變量值 
TmpString = "" 
End If 
Next 
if TmpString<>"" Then MyString = (Str & TmpString) 
End Sub 
%> 

如有不對之處,請大家拍拍磚,呵呵
也可以用數組來拼接字符串啦! 
復制代碼代碼如下:

'最簡單的例子,生成num個重復的str,例如 XString(5,"<br>") '輸出: <br><br><br><br><br> 
Function XString(num,str) 
On Error Resume Next 
Dim i,a 
Redim a(num-1) 
For i=0 To num-1 
a(i)=str 
Next 
XString=Join(a,"") 
On Error GoTo 0 
End Function 


'字符串拼接類公共版 
Class clsStrCat 
Private aFStrings() 
Private iFSPos,iFSLen,iFSIncr 
Private Sub Class_Initialize() 
On Error Resume Next 
iFSIncr = STRCATBUF 
If Err Then iFSIncr = 200 : Err.Clear 
Reset 
On Error GoTo 0 
End Sub 
Private Sub Class_Terminate() 
Erase aFStrings 
End Sub 
Public Property Let Item(ByRef sData) 
If iFSPos > iFSLen Then 
iFSLen = iFSPos + iFSIncr 
ReDim Preserve aFStrings(iFSLen) 
End If 
aFStrings(iFSPos) = sData 
iFSPos = iFSPos + 1 
End Property 
Public Default Property Get Item() 
Item = Join(aFStrings, "") 
End Property 
Public Sub Reset() 
iFSPos = 0 
iFSLen = iFSIncr 
ReDim aFStrings(iFSLen) 
End Sub 
Public Sub Resize(n) 
If Not IsNumeric(n) Then Exit Sub 
iFSPos = 0 
iFSIncr = n 
iFSLen = iFSIncr 
ReDim aFStrings(iFSLen) 
End Sub 
Public Property Get Strs() 
Strs=aFStrings 
End Property 
Public Property Get Count() 
Count=iFSPos 
End Property 
Public Property Get IsInit() 
If iFSPos=0 Then IsInit=True Else IsInit=False 
End Property 
End Class 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人激情春色网| 欧美老女人xx| 欧美中文字幕视频| 中文字幕在线日韩| 中文欧美日本在线资源| 久久久久久久国产精品视频| 伊人成人开心激情综合网| 国产精品视频网| 亚洲福利视频在线| 久久av.com| 精品国产电影一区| 久久久久99精品久久久久| 欧美精品少妇videofree| 最近2019中文字幕大全第二页| 欧美亚洲视频一区二区| 日韩欧美中文免费| 亚洲国产高潮在线观看| 国产精品www色诱视频| 亚洲人成电影在线观看天堂色| 亚洲精品ady| 国产精品专区第二| 国产精品99久久久久久久久久久久| 国产精品福利网站| 日韩av理论片| 欧美xxxx综合视频| 亚洲成人av片| 久久国产精品视频| 91久久久久久国产精品| 亚洲韩国青草视频| 国产精品流白浆视频| 2018中文字幕一区二区三区| 欧美综合国产精品久久丁香| 日韩在线播放视频| 亚洲福利在线视频| 91极品女神在线| 亚洲第一福利网站| 亚洲视频在线免费观看| 91精品国产乱码久久久久久久久| 欧美成年人网站| 国产精品www| 亚洲精品v天堂中文字幕| 欧美日韩久久久久| 午夜精品蜜臀一区二区三区免费| 亚洲高清免费观看高清完整版| 欧美特级www| 亚洲欧美制服中文字幕| 日韩精品高清在线| 国产日韩精品电影| 亚洲aⅴ男人的天堂在线观看| 久久99国产精品久久久久久久久| 国产亚洲成av人片在线观看桃| 精品美女国产在线| 国产+成+人+亚洲欧洲| 欧美日韩爱爱视频| 久久亚洲综合国产精品99麻豆精品福利| 中文字幕日韩综合av| 国产精品jizz在线观看麻豆| 91香蕉国产在线观看| 4k岛国日韩精品**专区| 欧美老女人www| 午夜精品久久久久久99热软件| 精品亚洲国产视频| 国产精品福利在线观看| 欧美一性一乱一交一视频| 日韩美女视频在线观看| 午夜精品蜜臀一区二区三区免费| 精品人伦一区二区三区蜜桃免费| 亚洲精品国产精品国产自| 欧美激情视频三区| 亚洲精品久久久久| 一区二区三区黄色| 孩xxxx性bbbb欧美| 亚洲第一综合天堂另类专| 亚洲视频在线观看视频| 日韩中文字幕免费| 欧美成人精品一区二区| 国产精品国产自产拍高清av水多| 欧美日韩免费看| 久久精品国产69国产精品亚洲| 久久综合网hezyo| 国产精品女人网站| 欧美极品美女视频网站在线观看免费| 久久综合电影一区| 欧美亚洲另类制服自拍| 日韩在线观看网站| 亚洲精品网站在线播放gif| 免费成人高清视频| 精品视频久久久| 亚洲天堂一区二区三区| 国产亚洲欧美日韩精品| 成人国产亚洲精品a区天堂华泰| 在线不卡国产精品| 搡老女人一区二区三区视频tv| 国产精品露脸自拍| 成人精品久久av网站| 亚洲mm色国产网站| 97成人超碰免| 国产精品91在线观看| 亚洲黄色av网站| 国产在线精品一区免费香蕉| 国产精品高潮呻吟视频| 26uuu另类亚洲欧美日本一| 欧美在线视频观看免费网站| 中文字幕日本精品| 欧美激情免费在线| 欧美性受xxxx白人性爽| 欧美日韩综合视频| 中文字幕av一区二区| 亚洲欧美在线播放| 欧美精品福利视频| 亚洲综合社区网| 国产女精品视频网站免费| 蜜月aⅴ免费一区二区三区| 欧美在线视频免费播放| 亚洲缚视频在线观看| 91亚洲国产成人久久精品网站| 欧美性猛交xxxx乱大交极品| 国产精品热视频| 久久国产精品久久久久久| 91性高湖久久久久久久久_久久99| 亚洲欧洲视频在线| 国产精品高潮呻吟久久av黑人| 国产午夜精品一区二区三区| 高清欧美性猛交xxxx黑人猛交| 色中色综合影院手机版在线观看| 久久精品国产一区二区三区| 久久99精品久久久久久青青91| 国产做受69高潮| 丁香五六月婷婷久久激情| 91极品女神在线| 欧美久久精品午夜青青大伊人| 欧美日韩免费一区| 欧美成人精品h版在线观看| 欧美高清激情视频| 国产精品极品美女在线观看免费| 国产一区深夜福利| 5566成人精品视频免费| 亚洲人成77777在线观看网| 国产精品91久久久| 欧美亚洲一级片| 中文字幕自拍vr一区二区三区| 久久久久成人精品| 奇门遁甲1982国语版免费观看高清| 亚洲国产精品专区久久| 欧美专区在线播放| 奇米四色中文综合久久| 欧美午夜精品久久久久久人妖| 疯狂做受xxxx高潮欧美日本| 亚洲国产成人久久综合一区| 日韩av在线资源| 在线播放国产精品| 亚洲精品国产精品久久清纯直播| 久久国产精品首页| 国语自产偷拍精品视频偷| 国产精品自拍偷拍视频| 社区色欧美激情 | 中国人与牲禽动交精品| 亚洲综合第一页| 高清欧美一区二区三区| 亚洲久久久久久久久久久| 欧美日韩国产在线播放| 91中文字幕一区| 日韩精品亚洲元码| 久久99久久99精品免观看粉嫩|