读写数组中的元素速度通常都慢于访问一个简单变量,因此,如果在一个循环中要重复使用同一数组元素值,就应该分配数组元素值到临时变量中并使用这个变量。下面举一个例子,检测整数数组中是否存在重复项:
Function AnyDuplicates(intArray() As Integer) As Boolean
'如果数组包含重复项,返回True
Dim i As Long, j As Long,
Dim lastItem As Long
Dim value As Integer
'只计算机UBound()一次
lastItem = UBound(intArray)
For i = LBound(intArray) To lastItem
' 保存intArray(i)到非数组变量中
value = intArray(i)
For j = i + 1 To lastItem
If value = intArray(j) Then
AnyDuplicates = True
Exit Function
End If
Next
Next
'没有发现重复项
AnyDuplicates = False
End Function
上述程序有2层循环,通过缓存intArray(i)的数值到一个普通的、非数组变量中,节省了CPU运行时间。经测试,这将提高80%的速度。