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 |