循环范围与循环数组之间的性能差异 [英] Performance difference between looping range vs looping array
本文介绍了循环范围与循环数组之间的性能差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
循环遍历一个范围与将相同的范围分配给一个数组并循环一个数组时,性能(速度)会有什么不同吗?
Will there be any difference in performance (speed) when looping through a range Vs assigning the same range to an Array and looping an Array?
推荐答案
循环数组比查看范围快得多.
Looping through an array is way faster than looking through a range.
见下面我的测试:
Option Explicit
Const strRANGE_ADDRESS As String = "A1:A100000"
Sub LoopRangeAddOne()
Dim r As Range
Dim lStart As Double
Dim lEnd As Double
lStart = Timer
For Each r In Range(strRANGE_ADDRESS)
r.Value = r.Value + 1
Next r
lEnd = Timer
Debug.Print "Duration = " & (lEnd - lStart) & " seconds"
End Sub
Sub LoopArrayAddOne()
Dim varArray As Variant
Dim var As Variant
Dim lStart As Double
Dim lEnd As Double
lStart = Timer
varArray = Range(strRANGE_ADDRESS).Value
For Each var In varArray
var = var + 1
Next var
Range(strRANGE_ADDRESS).Value = varArray
lEnd = Timer
Debug.Print "Duration = " & (lEnd - lStart) & " seconds"
End Sub
结果:
LoopRangeAddOne 持续时间 = 2.2734375 秒
LoopRangeAddOne Duration = 2.2734375 seconds
LoopArrayAddOne 持续时间 = 0.08203125 秒
LoopArrayAddOne Duration = 0.08203125 seconds
这使得循环数组比循环快 96.39%.
Which makes looping through an array 96.39% faster than through a loop.
希望这有帮助:)
这篇关于循环范围与循环数组之间的性能差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文