Fortran Coder

标题: do循环的计算性能请教 [打印本页]

作者: astly2004    时间: 2021-9-29 10:01
标题: do循环的计算性能请教
请问一下的循环迭代,,执行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


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

对我们都是未知的。




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