假设我有一个非常大的数组a
。
第一种情况:将a
定义为局部变量,并将其传递给函数calculate()
的参数。
real, dimension(:,:,:,:), allocatable :: a
...
real function calculate(a)
real, dimension(100, 100, 100, 100), intent(in) :: a
% some complicated calculations
...
end function calculate
第二种情况:将a
定义为全局变量,并将其用于函数calculate()
中的计算。
real, dimension(:,:,:,:), allocatable, public :: a
...
real function calculate()
% some complicated calculations
...
end function calculate
如果第一和第二种情况中的函数calculate()
完全相同。这两个程序可以在运行时速度上有所不同吗?如果"可以"请一步一步向我解释为什么会这样。