如果我的程序中有以下声明:
logical, parameter :: verbose = .false.
会添加一些诸如
之类的东西if (verbose) write(*,*) "Information here"
在使用“-03”进行编译时会影响性能? 我希望编译器会认识到块总是假的,因此完全删除它们,所以我可以随意添加调试打印。是这种情况吗?
我想这可能与编译器有关,但希望对于最常见的编译器有一个答案。如果没有,gfortran的行为是什么?
提前感谢您的帮助。
答案 0 :(得分:2)
根据上述评论者的好建议,我自己测试了这个。 用gfortran转向,即使是优化级别-O0似乎也可以完全删除死写块。