Fortran Coder

标题: 子程序下方的语句使其跑的变慢 [打印本页]

作者: 不可能猎人    时间: 2017-7-2 23:33
标题: 子程序下方的语句使其跑的变慢
主要情况:我把下面程序中(! fa=fcint)的注释去掉的时候,计时部分即:epgrah需要跑1.5秒,而保留注释的时候计时部分只需要0.14秒。先上程序:
[Fortran] 纯文本查看 复制代码

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)。请问各位大神,这是什么原因?怎么解决?

作者: vvt    时间: 2017-7-3 07:29
您用的什么编译器?什么编译选项?(debug | release)?
作者: 不可能猎人    时间: 2017-7-3 09:47
vvt 发表于 2017-7-3 07:29
您用的什么编译器?什么编译选项?(debug | release)?

谢谢回复!
visual studio 2013,选项为 release。也用visual studio 2010试过,同样有这情况。
作者: pasuka    时间: 2017-7-3 14:52
不可能猎人 发表于 2017-7-3 09:47
谢谢回复!
visual studio 2013,选项为 release。也用visual studio 2010试过,同样有这情况。 ...

lz答非所问啊!
vvt版友问的是Fortran 编译器版本?
visual studio 无论哪个版本都无法编译Fortran源代码,除非安装并集成相应的Fortran 编译器
作者: 不可能猎人    时间: 2017-7-3 15:10
vvt 发表于 2017-7-3 07:29
您用的什么编译器?什么编译选项?(debug | release)?

改正一下,编译器是IVF 2011
作者: 不可能猎人    时间: 2017-7-3 15:14
pasuka 发表于 2017-7-3 14:52
lz答非所问啊!
vvt版友问的是Fortran 编译器版本?
visual studio 无论哪个版本都无法编译Fortran源代码 ...

谢谢提醒
作者: vvt    时间: 2017-7-3 18:11
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如果楼主不方便,那就爱莫能助了。
作者: pasuka    时间: 2017-7-4 08:58
vvt 发表于 2017-7-3 18:11
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如 ...

可以让lz加qq好友,然后远程桌面协助,这样lz就不用上传源代码了
作者: 不可能猎人    时间: 2017-7-4 10:56
vvt 发表于 2017-7-3 18:11
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如 ...

这个涉及到一些别人的利益,确实不太方便,不好意思,不过还是谢谢了。
现在我把它分成几个简单一点的程序,然后分开跑,暂时将就着用。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2