C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■97945 / )  多次元配列の順序を入れ替える
□投稿者/ 鬼太郎 (1回)-(2021/08/10(Tue) 23:24:43)

分類:[.NET 全般] 

多次元配列を使ったプログラムをVB.NETで書いています。

https://www.wareko.jp/blog/acceleration-loop-technique-of-multidimensional-array-in-csharp


このサイトにあるように


        Dim X_Max As Integer, Y_Max As Integer, Z_Max As Integer

        Dim Array(X_Max, Y_Max, Z_Max) As Single

        For z = 1 To Z_Max

            For y = 1 To Y_Max

                For x = 1 To X_Max

                    Dim aa = Array(x, y, z)

                Next x

            Next y

        Next z


とアクセスするよりも


        Dim Array2(Z_Max, Y_Max, X_Max) As Single

        For z = 1 To 100

            For y = 1 To 100

                For x = 1 To 100

                    Dim aa = Array2(z, y, x)

                Next x

            Next y

        Next z


とアクセスした方が5倍程度高速化できます。

ただ、画像ファイルの場合には、


Dim img As New Bitmap(X_Max, Y_Max, PixelFormat.Format8bppIndexed)


のようにX→Yの順番になっており、

Dim Array2(Z_Max, Y_Max, X_Max) As Single
で配列を宣言するのは
使いづらいです。


上記サイトによるとFortranの場合には、
多次元配列の格納順が逆になっており
Dim Array(X_Max, Y_Max, Z_Max) As Single
の方が高速になるそうなのですが、

VBの場合でもFortranと同じように
多次元配列で格納される順番を変えることってできないのでしょうか?


返信 編集キー/


管理者用

- Child Tree -