Fortran Coder

查看: 12039|回复: 4
打印 上一主题 下一主题

[讨论] 最近发现的一个问题,一直困扰我,看看没有大神给我解惑

[复制链接]

799

帖子

2

主题

0

精华

大宗师

F 币
3797 元
贡献
2270 点
楼主
发表于 2021-2-10 10:18:13 | 显示全部楼层
1、如果想要达到时间与计算量成比例,用release,并且关闭优化,因为优化后的程序并不是严格按照代码顺序运行。图中开启优化后时间不到1s,而关闭优化时间接近10s。
2、如果没有if,每次循环只执行一条赋值;有if时,一半的循环只执行赋值,另一半执行判断+cycle,而判断是较为耗时的。因此加了if反而更慢。
3、根据这个代码的实际情况,可以限制循环范围,规避if。
[Fortran] 纯文本查看 复制代码
indt=0;ce=0
do k=1,maxz
do j=1,maxy
do i=1,39
indt(i,j,k)=1
enddo
do i=40,maxx
ce(i,j,k)=dzz
end do
enddo
enddo

1.png (51.36 KB, 下载次数: 242)

1.png

2.png (51.64 KB, 下载次数: 229)

2.png
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-9 03:51

Powered by Tencent X3.4

© 2013-2024 Tencent

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