用Mid$命令超速字符串添加操作

字號:

大家都知道,&操作符的執(zhí)行速度是相當慢的,特別是處理長字符串時。當必須重復(fù)地在同一變量上附加字符時,有一個基于Mid$命令的技巧可以使用。基本思路就是:預(yù)留一個足夠長的空間存放操作的結(jié)果。下面是應(yīng)用這個技術(shù)的一個例子。
    假設(shè)要建立一個字符串,它要附加從1開始的10000個整數(shù):"1 2 3 4 5 6 7 ... 9999
    10000"。下面是最簡單的實現(xiàn)代碼:
    res = ""
    For i = 1 to 10000: res = res & Str(i): Next
    代碼雖然簡單,但問題也很明顯:Res變量將被重分配10000次。下面的代碼實現(xiàn)同樣的目的,但效果明顯好轉(zhuǎn):
    Dim res As String
    Dim i As Long
    Dim index As Long
    '預(yù)留足夠長的緩沖空間
    res = Space(90000)
    '指針變量,指出在哪里插入字符串
    index = 1
    '循環(huán)開始
    For i = 1 to 10000
    substr = Str(i)
    length = Len(substr)
    '填充字符串的相應(yīng)區(qū)間段數(shù)值
    Mid$(res, index, length) = substr
    '調(diào)整指針變量
    index = index + length
    Next
    '刪除多余字符
    res = Left$(res, index - 1)
    測試表明:在一個333MHz的計算機上,前段代碼執(zhí)行時間為2.2秒,后者僅僅為0.08秒!代碼雖然長了些,可是速度卻提高了25倍之多。呵呵,由此看來:代碼也不可貌相啊