配列(一次元/二次元)

二次元配列の一次元目を増やす場合、Transposeもしくは別配列代入はどちらが早いか?

二次元配列の一次元目の要素を増やすには以下方法があります。

実際には65537件以上はTranspose関数を利用した場合は正常にデータ取得できないので、
別配列に代入がおすすめなのですが、速度的にはどちらのが早いでしょうか。
検証しました。

Transposeもしくは別配列代入はどちらが早いか?

Public Sub test()
    Dim stime As Single: stime = Timer
    Dim arr As Variant
    Dim sLen As Long: sLen = 1

    '■配列の宣言
    ReDim arr(1 To 1, 1 To 30)
    
    '■Forで回しながら、arrの縦要素を増やしていく
    Dim i As Long
    For i = 1 To 10000
        Application.StatusBar = i
        DoEvents
        sLen = sLen + 1
        'arr = Call_RedimPreserveArray(arr, sLen)
        arr = CallArraySizeUp(arr, sLen)
    Next
        
    Debug.Print "経過時間=" & Format(Timer - stime, "00.000")
End Sub

結果

1,000件10,000件
Transpose4.317秒355.921秒
別配列3.713秒145.76秒

1万件だと倍近く差がでました。結果、別配列代入のが早いです。

関連記事

コメント

タイトルとURLをコピーしました