Fortran プログラムを書いています。このプログラムは、いくつかの数値メソッドを実装しています。プログラムの速度は非常に重要です。私は動的配列を取り除くことに決めました (プログラムを高速化するかどうか?)、次の問題に直面しました。MAX を知っている 3D 配列 (NXxNYxNZ = MAX 要素) がありますが、NX/NY/NZ の比率はわかりません。1x1xNZ またはこの 2xNYx1 などのようにすることができます。解決策は、ポインターを使用することです。単純化された 2D ケース:
program ptrtest
parameter ( MAX = 50 ) ! I know this number on compile time.
integer :: NX,NY ! I will find this numbers on run time.
real, target :: a(MAX) ! Static Array
real, pointer :: b(:,:)
a = 5
read(*,*) NX, NY ! I get NX, NY (NX*NY == MAX)
b (1:NX, 1:NY) => a ! I can use b(:,:) <- this is my goal.
end program ptrtest
この例は機能しますが、そのような更新により、5 次元配列を使用している実際のプログラムの速度が低下するのではないかと心配しています。出来ますか?