子程序下方的语句使其跑的变慢
主要情况:我把下面程序中(! fa=fcint)的注释去掉的时候,计时部分即:epgrah需要跑1.5秒,而保留注释的时候计时部分只需要0.14秒。先上程序:subroutine divergent_point_eprgrah(root,n_root,ww_min,ww_max,e1,e2,qq,lmd_k,lmd_kq,eef,kt,uu_d,ss,vvo_q,gdelt,layers) !e1:横坐标精度 e2:纵坐标精度
use number
implicit none
real(8)::qq,lmd_k,lmd_kq,eef,kt,uu_d,ss,vvo_q,gdelt
real(8)::eprgrah,epigrah
real(8)::e1,e2,ww_max,ww_min
real(8)::cint,dint,fcint,fdint,a,b,c,fa,fb,fc !自带参数
real(8)::time_dep,layers,ww0
real(8),dimension(100)::root !存放根
integer::i,j,k,n,sign,n_root
eprgrah=0.0d0
epigrah=0.0d0
n_root=0
sign=0
cint=ww_min
dint=cint+1.0d-5/c_ev
ww0=500.0d0*0.02d0*0.001d0
dint=ww0/c_ev
call CPU_TIME(time_dep)
write(*,*) 'time_dep1',time_dep
call epgrah(fdint,epigrah,dint,qq,gdelt,lmd_k,lmd_kq,eef,kt,uu_d,ss,vvo_q,layers)
call CPU_TIME(time_dep)
write(*,*) 'time_dep2',time_dep
a=cint
! fa=fcint
fb=fdint
sign=1
end
以上是包含 计时部分的小的子程序 的子程序。这个子程序有很多别的语句因为调试被注释了,上面发的只是调试时会用到的语句,所以比较乱,请大神多多包涵。
现在的详细情况是:我把子程序 divergent_point_eprgrah中基本上随便注释几个赋值语句,子程序epgrah就会跑得很快(约0.14s),而都保留的时候,就跑的很慢(约1.5s),甚至在子程序epgrah中注释掉几个语句,它也会跑得很快(约0.14s)。请问各位大神,这是什么原因?怎么解决?
您用的什么编译器?什么编译选项?(debug | release)? vvt 发表于 2017-7-3 07:29
您用的什么编译器?什么编译选项?(debug | release)?
谢谢回复!
visual studio 2013,选项为 release。也用visual studio 2010试过,同样有这情况。 不可能猎人 发表于 2017-7-3 09:47
谢谢回复!
visual studio 2013,选项为 release。也用visual studio 2010试过,同样有这情况。 ...
lz答非所问啊!
vvt版友问的是Fortran 编译器版本?
visual studio 无论哪个版本都无法编译Fortran源代码,除非安装并集成相应的Fortran 编译器 vvt 发表于 2017-7-3 07:29
您用的什么编译器?什么编译选项?(debug | release)?
改正一下,编译器是IVF 2011 pasuka 发表于 2017-7-3 14:52
lz答非所问啊!
vvt版友问的是Fortran 编译器版本?
visual studio 无论哪个版本都无法编译Fortran源代码 ...
谢谢提醒 这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如果楼主不方便,那就爱莫能助了。 vvt 发表于 2017-7-3 18:11
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如 ...
可以让lz加qq好友,然后远程桌面协助,这样lz就不用上传源代码了 vvt 发表于 2017-7-3 18:11
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如 ...
这个涉及到一些别人的利益,确实不太方便,不好意思,不过还是谢谢了。
现在我把它分成几个简单一点的程序,然后分开跑,暂时将就着用。
页:
[1]