我有一个 fortran 代码,我必须修改以包含一个新库。最初在代码中,数组的大小是在 Makefile 中传递的,这意味着每次我想更改数组的大小时,我都必须重新编译代码。我将其更改为从“输入参数文件”中读取输入数组的大小,从而避免每次都需要重新编译。但是,由于各种原因,我的代码比以前慢了很多。
与我的老板交谈时,他认为可能是因为我们在编译时没有传递数组的大小,所以代码没有得到很好的优化。这可能是真的吗?
谢谢
- - - - - - - -编辑 - - - - - - - - - - -
最初在makefile中有这些行
NL = 8
@echo Making $(SIZE_FILE) .....
echo " integer, parameter( nl = " $(NL) " )" > $(SIZE_FILE)
这创建了一个值为“NL”的“sizefile”。该文件在主程序中作为标题“包含”,然后在 fortran 文件中声明数组如下:
include "sizefile"
real*8, dimension ur(nl)
现在我声明了一个名为“read_input_parameters”的子程序,该程序由读取值为“Nl”的文本文件的程序调用。然后我像这样分配数组:
program test
integer n
allocatable :: ur(:)
call read_input_parameters(n)
allocate(ur(n))
*operations*
deallocate(ur)
stop
end