婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > vbs的字符串操作效率分析總結

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

熱門標簽:外呼營銷下單系統 百度地圖標注怎么卸載 前鋒辦理400電話申請 辦理膠州400電話財稅 加盟電銷機器人好的品牌 海外美發店地圖標注 新密防封卡外呼系統違法嗎 陜西高頻外呼回撥系統哪家好 打電話的外呼系統貴不貴
可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=(Stra1)
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

標簽:河南 牡丹江 梅州 伊春 武威 阜陽 咸陽 四平

巨人網絡通訊聲明:本文標題《vbs的字符串操作效率分析總結》,本文關鍵詞  vbs,的,字符串,操作,效率,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《vbs的字符串操作效率分析總結》相關的同類信息!
  • 本頁收集關于vbs的字符串操作效率分析總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 滦南县| 商城县| 庆阳市| 盖州市| 城固县| 香港| 寿宁县| 礼泉县| 始兴县| 邳州市| 尖扎县| 长岛县| 尼勒克县| 黎平县| 汶川县| 宁夏| 无为县| 玉田县| 胶州市| 莒南县| 马龙县| 乌拉特前旗| 冕宁县| 乌兰浩特市| 孙吴县| 河间市| 阳新县| 精河县| 鄂托克前旗| 青冈县| 曲沃县| 同心县| 磴口县| 民勤县| 桓台县| 滦南县| 苏尼特右旗| 临洮县| 梁河县| 报价| 仁怀市|