Fortran Coder

查看: 5661|回复: 2
打印 上一主题 下一主题

[编译器] 计算耗时每次相差0.5秒

[复制链接]

83

帖子

35

主题

0

精华

专家

F 币
343 元
贡献
215 点
跳转到指定楼层
楼主
发表于 2020-6-13 11:09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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秒,这也太多了吧




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

250

帖子

2

主题

0

精华

宗师

F 币
1730 元
贡献
872 点

规矩勋章

沙发
发表于 2020-6-15 09:35:07 | 只看该作者
每次运行程序使用的内存块、cpu负载都是操作系统自动调整的,所以每次都会稍微有点差别,计算量小的程序看起来差别就可能很大,计算量大的就不明显了

130

帖子

10

主题

0

精华

大师

F 币
617 元
贡献
372 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

板凳
发表于 2020-7-19 19:24:05 | 只看该作者
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)                          

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

本版积分规则

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

GMT+8, 2024-4-27 03:43

Powered by Tencent X3.4

© 2013-2024 Tencent

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