24小时热门版块排行榜    

查看: 801  |  回复: 8
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

dellus

木虫 (职业作家)

[交流] 【求助】Fortran中有什么好方法计算CPU时间?【已完结】

Fortran中SECOND子程序(or function)是怎么用的?
大家有什么好的办法计算CPU时间?
我试过secnds和CPU_Time,好象都有BUG

比如把一个运算放在一个do循环里运行,分别在循环前和循环后记录时间,最后写出时间
如果最后的write语句中加上循环中运行的结果,需要7、8秒,如果只输出时间,只有10(-5)秒

[ Last edited by 余泽成 on 2010-1-27 at 22:20 ]
回复此楼

» 猜你喜欢

岂能尽如人意,但求无愧于心。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dellus

木虫 (职业作家)

senlia(金币+0,VIP+0):我算出来都是5.156左右 每次运行时间都不完全一样 但都差不过十几毫秒 12-18 08:43
两段程序几乎一样,除了输出语句略有差别,但t1的运行结果一个是1.999999767576810E-006,一个是7.15873999999985。有谁知道怎么回事吗?还是只有我用的系统有这样的问题?

program main
      integer :: i
      double precision :: f0, f1, t0, t1
      f0 = 0
      f1 = 0
      t0 = secnds (0.0d0)
      do i = 1, 100000000
            f1 = f1 + dcos(f1)
      end do
      t1 = secnds(t0)
      write(*,*) t1
end program main


program main
      integer :: i
      double precision :: f0, f1, t0, t1
      f0 = 0
      f1 = 0
      t0 = secnds (0.0d0)
      do i = 1, 100000000
            f1 = f1 + dcos(f1)
      end do
      t1 = secnds(t0)
      write(*,*) t1, f1
end program main
岂能尽如人意,但求无愧于心。
7楼2009-12-18 06:27:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

★ ★
dellus(金币+2,VIP+0):版主帮忙啊 12-17 17:56
以前自己在77下写过一个子程序。不知新版的fortran是否提供了更好的函数?跟着学
2楼2009-12-17 17:25:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

★ ★ ★
波不动(金币+1,VIP+0):辛苦了。 12-17 19:30
dellus(金币+2,VIP+0):谢谢!F95里有DATE_AND_TIME,包括date和time的作用,而且不存在date的2000年的问题,不过这个函数计时精度不够 12-18 06:14
我看了一下Compaq Visual Fortran 6.6 Language Reference,里面有date和time两个内部函数,应该可以解决你的问题。
3楼2009-12-17 18:14:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

从我N年以前的程序中摘了点给你看,也不知行不行

★ ★ ★ ★ ★ ★ ★ ★ ★
波不动(金币+2,VIP+0):感谢应助! 12-17 19:30
dellus(金币+3,VIP+0):谢谢!很热心的版主 12-18 06:16
dellus(金币+4,VIP+0): 12-23 14:05
...
      INTEGER(4) int_time0,int_time1
      character*8 char_time

!  show the starting time of this calculation
        call TIME(char_time)
        print *, 'Starting time on the PC is ', char_time
...
        int_time0=TIME( )
...
        int_time1=TIME( )
        print *, 'This calculation lasts ',int_time1-int_time0,'(s)'
4楼2009-12-17 18:19:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见