Fortran Coder

查看: 197|回复: 1

[求助] do循环的计算性能请教

[复制链接]

10

帖子

4

主题

0

精华

入门

F 币
63 元
贡献
35 点
发表于 2021-9-29 10:01:37 | 显示全部楼层 |阅读模式
请问一下的循环迭代,,执行1.5秒,,算是正常么??有什么好办法优化到毫秒级么?
NoSteadySolutionIter=100
size(Elems)=10000

[Fortran] 纯文本查看 复制代码
do while(iter < NoSteadySolutionIter)
  iter=iter+1
  LastIter=iter
  call IniFrnt
  do k=1,size(Points)
    Points(k).dU=0
  enddo
  do ixelem=1,size(Elems)
    ielem = Front_Order(ixelem)
    if(ielem == 0) cycle
    if(Elems(ielem).infront == 0) cycle
    if(Elems(ielem).tip == PIPE_OBJ) then
      call SteadyPipeMtx(ielem)
    endif
    call FrontU(ielem,LunFrn)
  enddo
  call FrontB(LunFrn)
  call IncVar()

  if (HnorMx <= EpsH .and. QnorMx <= EpsQ .and. OnorMx <= EpsO) then
    if(InitSolution()) then
      call SaveSolutionStage(kstage,curtim)
      call ConvergenceReport(0d0)
      Steady = .true.
      return
    else
      Steady = .false.
      return
    endif
  endif
enddo

回复

使用道具 举报

1637

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
2047 元
贡献
1292 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2021-9-29 10:43:14 | 显示全部楼层
仅给出代码片段,分析性能,是做不到的。
毕竟,各种变量如何定义的?复合结构(数组或结构体)到底多大?
期间调用的函数内部是否复杂?期间的if条件是否满足?

对我们都是未知的。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2021-10-24 07:48

Powered by Tencent X3.4

© 2014-2021 Tencent

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