|
- Option Explicit
- '字符串连接并显示的方式的速度差别
- '
- '工程里加入一个文本框,MultiLine=True,ScrollBars=2,再加入一个按钮
- '
- 'By 嗷嗷叫的老马
- 'http://www.m5home.com/
-
- Private Declare Function GetTickCount Lib "kernel32.dll" () As Long
-
- Private Sub Command1_Click()
- Dim I As Long, J As Long, K As Long, L As Long
- Dim Arr1() As String, Arr2() As String, Arr3() As String
- Dim buffArr() As String
- Dim STT As Long
-
- Text1.Font = "宋体"
- Text1.Font.Size = 9
-
- STT = GetTickCount
-
- J = 65
- K = 66
- L = 67
-
- ReDim Arr1(10000)
- ReDim Arr2(10000)
- ReDim Arr3(10000)
-
- For I = 0 To 10000
- Arr1(I) = String(5, Chr(J))
- Arr2(I) = String(5, Chr(K))
- Arr3(I) = String(5, Chr(L))
-
- If J = 90 Then
- J = 65
- Else
- J = J + 1
- End If
- If K = 90 Then
- K = 65
- Else
- K = K + 1
- End If
- If L = 90 Then
- L = 65
- Else
- L = L + 1
- End If
- Next
-
- Debug.Print "生成数组时间(ms) ="; GetTickCount - STT
- MsgBox "OK1"
-
- STT = GetTickCount
-
- ReDim buffArr(10000)
-
- For I = 0 To 10000
- buffArr(I) = Arr1(I) & "," & Arr2(I) & "," & Arr3(I) '中间结果保存到一个字符串数组
- Next
-
- Text1.Text = Join(buffArr(), vbCrLf) '使用join一次性连接,并赋值给文本框
-
- Debug.Print "使用中间变量保存并使用Join一次性填充时间(ms) ="; GetTickCount - STT
- MsgBox "OK2"
-
- Text1.Text = ""
- STT = GetTickCount
-
- For I = 0 To 10000
- Text1.Text = Text1.Text & Arr1(I) & "," & Arr2(I) & "," & Arr3(I) & vbCrLf
- Next
-
- Debug.Print "使用控件属性直接填充时间(ms) ="; GetTickCount - STT
- MsgBox "OK3"
- End Sub
复制代码 我这里是37/126/18XXXX,时间太长了.........差不多有2000倍的性能差. |
|