"USE"对表现的影响

sol*_*ito 3 optimization fortran

我目前正在研究大型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
Run Code Online (Sandbox Code Playgroud)

在每个模块中看到这一点,我想知道这是为了清晰还是优化.如果模块OneModule有大量子程序,如果我们在规范部分中USE的模块MESH只有少数几个子程序需要它,它会影响性能吗?

Ian*_*anH 8

考虑到典型的编译器实现,如果USE的定位对执行时间产生任何影响,我会被震惊(并向编译器供应商编写错误报告).它可能会对编译时间产生无关紧要的影响.

在内部或外部范围中定位更多的是与标识符可访问性的程序要求相交的优选编程风格的问题.

(有一个例外,但它在这里没有关系.F2003为IEEE浮点支持引入了一组内在的(编译器提供的)模块.仅仅存在一些这些模块可以改变编译器为任何事物生成的代码. USE的范围.)