VS循环数组的循环范围之间的性能差异 [英] Performance difference between looping range vs looping array
本文介绍了VS循环数组的循环范围之间的性能差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
通过一系列循环VS分配相同的范围内阵列和循环数组时,会不会有性能(速度)有什么区别?
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.
希望这有助于:)
这篇关于VS循环数组的循环范围之间的性能差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文