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

首頁 > 編程 > VBScript > 正文

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

2020-07-26 11:51:14
字體:
來源:轉載
供稿:網友
可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
亚洲精品电影在线| 久久九九精品99国产精品| 91影视免费在线观看| 91精品免费久久久久久久久| 亚洲福利视频二区| 欧美亚洲成人xxx| 亚洲欧美制服中文字幕| 欧美日韩在线影院| 欧美一级片免费在线| 亚洲一区二区三区sesese| 国产精品久久久av| 日韩在线观看网址| 日韩在线视频免费观看高清中文| 欧美黑人又粗大| 黄网站色欧美视频| 69久久夜色精品国产69| 91精品久久久久久综合乱菊| 奇米成人av国产一区二区三区| 欧美三级xxx| 久久精品久久久久电影| 国产精品尤物福利片在线观看| 亚洲国产成人爱av在线播放| 日韩中文字幕在线播放| 成人免费大片黄在线播放| 日韩精品中文字幕视频在线| 欧美激情二区三区| 性欧美xxxx| 欧美日韩国产成人在线观看| 久久久久久久久久国产| 亚洲人成电影网站| 欧美最猛性xxxxx亚洲精品| 亚洲性生活视频在线观看| 久久亚洲精品小早川怜子66| 日韩av在线一区| 欧美日韩亚洲国产一区| 97精品免费视频| 成人日韩在线电影| 亚洲一区二区三区成人在线视频精品| 91视频九色网站| 激情亚洲一区二区三区四区| 日本午夜在线亚洲.国产| 亚洲精品日韩欧美| 欧美性猛交99久久久久99按摩| 国产日韩精品入口| 欧美精品久久久久| 成人久久18免费网站图片| 亚洲第一网站男人都懂| 一区二区三区美女xx视频| 国内精品视频一区| www.亚洲成人| 欧美日韩亚洲激情| 亚洲男人天天操| 久久夜精品va视频免费观看| 最近中文字幕2019免费| 国产一区二区三区直播精品电影| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美激情三级免费| 亚洲美女中文字幕| 欧美日韩中文字幕在线| 伊人久久久久久久久久久| 91高清免费在线观看| 亚洲欧美国产精品专区久久| 日本中文字幕久久看| 精品国产一区二区三区久久久狼| 538国产精品一区二区在线| 亚洲国产精品va在线| 久久久久久69| 欧美成人午夜影院| 国产日本欧美一区二区三区| 日本成熟性欧美| 久久精品成人欧美大片古装| 日韩大片在线观看视频| 91中文字幕在线| 国产精品专区第二| 性欧美激情精品| 国产一区二区香蕉| 欧美一级片一区| 日韩在线播放av| 成人在线视频福利| 亚洲成人激情图| x99av成人免费| 国产ts人妖一区二区三区| 欧美伦理91i| 亚洲午夜国产成人av电影男同| 亚洲成色777777在线观看影院| 日韩在线播放一区| 日韩av免费在线看| 亚洲精品美女视频| 久久久天堂国产精品女人| 精品国产欧美一区二区五十路| 国产精品对白刺激| 国产国语刺激对白av不卡| 亚洲成人久久久| 欧美丝袜第一区| 亚洲国语精品自产拍在线观看| 91高清免费视频| 69精品小视频| 国产精品美女网站| 日韩欧美主播在线| 91精品国产91久久久久久不卡| 日韩人在线观看| 国产区精品在线观看| 欧美多人爱爱视频网站| 国产999精品| 日韩一区二区三区在线播放| 亚洲国产精品成人av| 国产美女高潮久久白浆| 国产成人jvid在线播放| 国产精品成人一区二区| 色噜噜狠狠色综合网图区| 亚洲美腿欧美激情另类| 国产精品999999| 亚洲xxxx在线| 91精品视频免费看| 日韩欧美成人网| 久久久精品在线| 欧美激情一区二区三区在线视频观看| 91精品国产综合久久香蕉| 欧美夫妻性生活视频| 亚洲第一福利在线观看| 精品国产91久久久久久| 欧美巨大黑人极品精男| 亚洲精品福利免费在线观看| 欧美激情精品在线| 日韩欧美一区二区三区久久| 国产精品99导航| 国产成人在线精品| 91国偷自产一区二区三区的观看方式| 中文字幕在线观看日韩| 久久久99免费视频| 91亚洲永久免费精品| 国产亚洲在线播放| 国产精品观看在线亚洲人成网| 日韩精品极品在线观看播放免费视频| 亚洲欧美变态国产另类| 国产69久久精品成人看| 亚洲在线观看视频网站| 日韩美女中文字幕| 欧美日韩国产综合视频在线观看中文| 久久久亚洲影院| 国产欧美久久久久久| 欧美国产精品va在线观看| 国产一区二区黑人欧美xxxx| 午夜伦理精品一区| 亚洲精品一区中文| 欧美亚洲视频一区二区| 国产美女被下药99| 一区二区成人精品| 亚洲美女黄色片| 欧美大成色www永久网站婷| 精品久久香蕉国产线看观看亚洲| 久久av资源网站| 成人国产精品免费视频| 一本色道久久综合狠狠躁篇的优点| 国内精品美女av在线播放| 国产亚洲欧美日韩一区二区| 亚洲男人天堂古典| 日韩av电影免费观看高清| 国产精品88a∨| 成人国产精品一区二区| 亚洲精品一区二三区不卡| 日韩一二三在线视频播| 久久精品国产69国产精品亚洲| 精品国产成人在线|