Fortran 编译器在优化时会完全删除总是错误的 if 块吗?

问题描述 投票:0回答:1

如果我的程序中有以下声明:

logical, parameter :: verbose = .false.

将添加一堆东西,例如

if (verbose) write(*,*) "Information here"

使用“-03”编译时对性能有影响吗? 我希望编译器能够认识到这些块总是错误的,从而完全删除它们,这样我就可以随意添加调试打印。是这样吗?

我想这可能取决于编译器,但希望最常见的编译器有一个答案。如果不是,gfortran 的行为是什么?

optimization gfortran fortran90
1个回答
3
投票

按照上面评论者的好建议,我自己测试了这一点。 有了 gfortran,即使优化级别 -O0 似乎也能完全删除死写块。

© www.soinside.com 2019 - 2024. All rights reserved.