VS循环数组的循环范围之间的性能差异 [英] Performance difference between looping range vs looping array

查看:105
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆