1。do loopは後ろから
do k = 1, kt
do j = 1, jt
do i = 1, it
A(i, j, k) = ...
end do
end do
end do
とする方が
do i = 1, it
do j = 1, jt
do k = 1, kt
A(i, j, k) = ...
end do
end do
end do
より効率いいらしい。
2。同じサイズのarrayはまとめて
real, dimension(3, n) :: a
とする方が
real, dimension(n) :: a, b, c
と三つに分けるよりいいらしい。
1&2のソース:https://jblevins.org/log/efficient-code
max(A(:, :, i))
とする方が
max(A(i, :, :))
より計算が早いらしい。
ソース:http://www.fortran90.org/src/best-practices.html
4。割り算より掛け算
(A / 2) / 4
より
(A * 0.5) * 0.25
の方が早いらしい。
ソース:https://www.allinea.com/blog/201407/four-simple-tips-optimizing-your-code
最後に。
コンパイラーに最適化のフラッグがあることに気づいた。
-Oというフラッグで-O3がベスト(コンパイルされる時間は増えるが)。
上記にあげたこともしてくれたりするのかな?