我目前正在编写一个大型 fortran 90
代码。大多数模块都有大量的子程序(>15)。模块 USE
其他模块在其规范部分,而它们的子例程 USE
其他模块在其之上。这是它的样子:
MODULE OneModule
USE GlobalConstant
USE GlobalVariable
CONTAINS
SUBROUTINE Subroutine1()
[...]
END SUBROUTINE Subroutine1
SUBROUTINE Subroutine2()
USE Mesh
[...]
END SUBROUTINE Subroutine2
[Other Subroutines]
END MODULE OneModule
在每个模块中都看到了这一点,我想知道这样做是为了清晰还是优化。如果模块OneModule
有大量子程序,如果我们在规范部分USE
模块MESH
如果只有少数,会不会影响性能?这些子程序中的哪些需要它?
最佳答案
考虑到典型的编译器实现,如果 USE 的定位对执行时间有任何影响,我会感到震惊(并向编译器供应商写错误报告)。它可能会对编译时间产生无关紧要的影响。
在内部或外部范围内定位更多的是首选编程风格与标识符可访问性的程序要求相交的问题。
(有一个异常(exception),但在这里不相关。F2003 引入了一组用于 IEEE 浮点支持的内在(编译器提供)模块。其中一些模块的存在可以改变编译器生成的代码对于 USE 范围内的任何内容。)
关于optimization - `USE` 对性能的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255790/