【问题标题】:Effect of `USE` on performance`USE` 对性能的影响
【发布时间】:2014-01-21 20:37:33
【问题描述】:

我目前正在处理一个大的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只有少数子程序需要,会不会影响性能?

【问题讨论】:

    标签: optimization fortran


    【解决方案1】:

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

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

    (有一个例外,但这里不相关。F2003 引入了一组用于 IEEE 浮点支持的内在(编译器提供)模块。其中一些模块的存在可以改变编译器生成的代码对于 USE 范围内的任何内容。)

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 2013-08-30
      • 2021-03-09
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2011-09-12
      • 2020-03-06
      相关资源
      最近更新 更多