Fortran と C でプログラミングを行っていますが、C プリプロセッサは、前処理定数を使用してコードを追加または非表示にする柔軟性が非常に優れていると思います。Fortran でこれを行う方法はわかりませんが、興味があります: Fortran コンパイラは、コンパイル時に削除できるコードを検出しますか?
これを例にとります:
program test_branch
implicit none
logical, parameter :: echo = .false.
integer :: n, sum
sum = 0
do n=1,100
sum = sum + n**2
if (echo) then
print *, "Sum:", sum
end if
end do
end program test_branch
echo の値が変わることはありませんが、コンパイラがこれを認識しない場合でも、実行可能ファイルにデッドで到達不能なコードを含めるだけでなく、毎回分岐をチェックします。明らかに、これは特に分岐予測ではそれほど大きな違いではありませんが、そのような式を追加して、文字通り何も費用がかからないかどうか疑問に思っています。これを行う最適化設定はありますか、それともデフォルトで行われる可能性がありますか?