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

查看:38
本文介绍了循环范围与循环数组之间的性能差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

循环遍历一个范围与将相同的范围分配给一个数组并循环一个数组时,性能(速度)会有什么不同吗?

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屋!

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