Fortran Coder

查看: 13613|回复: 8
打印 上一主题 下一主题

[求助] 子程序下方的语句使其跑的变慢

[复制链接]

5

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
19 点
跳转到指定楼层
楼主
发表于 2017-7-2 23:33:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主要情况:我把下面程序中(! 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)。请问各位大神,这是什么原因?怎么解决?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2017-7-3 07:29:35 | 只看该作者
您用的什么编译器?什么编译选项?(debug | release)?

5

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
19 点
板凳
 楼主| 发表于 2017-7-3 09:47:22 | 只看该作者
vvt 发表于 2017-7-3 07:29
您用的什么编译器?什么编译选项?(debug | release)?

谢谢回复!
visual studio 2013,选项为 release。也用visual studio 2010试过,同样有这情况。

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

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

lz答非所问啊!
vvt版友问的是Fortran 编译器版本?
visual studio 无论哪个版本都无法编译Fortran源代码,除非安装并集成相应的Fortran 编译器

5

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
19 点
5#
 楼主| 发表于 2017-7-3 15:10:27 | 只看该作者
vvt 发表于 2017-7-3 07:29
您用的什么编译器?什么编译选项?(debug | release)?

改正一下,编译器是IVF 2011

5

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
19 点
6#
 楼主| 发表于 2017-7-3 15:14:43 | 只看该作者
pasuka 发表于 2017-7-3 14:52
lz答非所问啊!
vvt版友问的是Fortran 编译器版本?
visual studio 无论哪个版本都无法编译Fortran源代码 ...

谢谢提醒

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
7#
发表于 2017-7-3 18:11:24 | 只看该作者
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如果楼主不方便,那就爱莫能助了。

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

8#
发表于 2017-7-4 08:58:06 | 只看该作者
vvt 发表于 2017-7-3 18:11
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如 ...

可以让lz加qq好友,然后远程桌面协助,这样lz就不用上传源代码了

5

帖子

1

主题

0

精华

入门

F 币
40 元
贡献
19 点
9#
 楼主| 发表于 2017-7-4 10:56:52 | 只看该作者
vvt 发表于 2017-7-3 18:11
这个问题比较难以确定。我还真没遇到过这种情况。
如果楼主方便,可以发全部代码和输入文件(打包压缩)
如 ...

这个涉及到一些别人的利益,确实不太方便,不好意思,不过还是谢谢了。
现在我把它分成几个简单一点的程序,然后分开跑,暂时将就着用。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-1 09:22

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表