此问题类似于this one。
假设您有一个子程序foo
,它将在您的程序中被调用数千次。此子例程使用几个小的本地数组,这些值不需要在连续调用中存储。子程序如下所示:
SUBROUTINE foo(globalArray)
USE MYMODULE
REAL, DIMENSION(:) :: globalArray
REAL, DIMENSION(myDimension) :: localArray1, localArray2, localArray3
...
Do computations with globalArray and localArray*
...
END SUBROUTINE
大小myDimension在执行时,在预处理例程中计算,并存储在模块MYMODULE
中。它总是很小(4到35之间)。我有三个以上的本地阵列(通常是15-20)。另外,我应该说对这个例程的调用占我代码执行时间的95%。
我注意到一些与上面的链接非常相似的东西。对于完全相同(小)的情况和相同(短)计算(但可以更大,更长时间复制),在具有相同编译器的同一台机器上:
myDimension
,我整个节目的挂载时间为2.13秒; myDimension
,我的整个程序的挂载时间是1.31秒; 然后我的问题是:
提前感谢您的回答!