Fortran Coder

标题: 计算耗时每次相差0.5秒 [打印本页]

作者: shrine    时间: 2020-6-13 11:09
标题: 计算耗时每次相差0.5秒
本帖最后由 shrine 于 2020-6-15 07:58 编辑



[Fortran] 纯文本查看 复制代码

      program main
      Use DFPort
      Use Kernel32

      integer , parameter :: QP = Selected_real_kind( 18 )
      integer::a , b , f,iss
      real(kind=QP)::time_begin,time_end   

      CALL CPU_TIME ( time_begin )
      iss = QueryPerformanceFrequency( Loc(f) )
      iss = QueryPerformanceCounter( Loc(a) )

......
......!computing
.....

      iss = QueryPerformanceCounter( Loc(b) )
      CALL CPU_TIME ( time_end )
      write(*,*)'Time of operation was ',(b-a)*1.0e-8_QP/(f*1.0e-8_QP), ' seconds' ,time_end-time_begin      
      end

这两种方法本身相差0.2秒
连续两次计算,相同的方法居然相差0.5秒,这也太多了吧





作者: necrohan    时间: 2020-6-15 09:35
每次运行程序使用的内存块、cpu负载都是操作系统自动调整的,所以每次都会稍微有点差别,计算量小的程序看起来差别就可能很大,计算量大的就不明显了
作者: chiangtp    时间: 2020-7-19 19:24
for "计算量的程序"
[Fortran] 纯文本查看 复制代码
  INTEGER :: clock_rate, clock_max, clocks, clock_1, clock_2           
  REAL    :: sec_elapsed                                               
                                                                       
  ...                                                                  
                                                                       
  CALL SYSTEM_CLOCK(COUNT_RATE=clock_rate, COUNT_MAX=clock_max)        
                                                                       
  ...                                                                  
                                                                       
  !-------                                                            
                                                                       
  CALL SYSTEM_CLOCK(COUNT=clock_1)                                    
  ...                                                                  
  CALL SYSTEM_CLOCK(COUNT=clock_2)                                    
                                                                       
  clocks = clock_2 - clock_1                                          
  IF( clocks < 0 ) clocks = clocks + clock_max                        
  sec_elapsed = REAL(clocks)/REAL(clock_rate)                          






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