Fortran三种计时方法

本文介绍了在Fortran中测量时间的三种方法:使用date_and_time获取日期和时间,使用cpu_time获取CPU时间,以及使用system_clock获取系统时间(毫秒)。通过示例代码展示了每种方法的具体应用,并比较了它们在执行相同任务时的时间测量结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1:

call date_and_time(charecter_date(len=8),charecter_time(len=10))
需要日期可以用这种方法

方法2:

call cpu_time(real_time)
最简单的方法,但只适用于单线程,
如果是多线程运行,得到的结果是所以线程时间的和!

方法3:

call system_clock(int_time)
整形,单位是毫秒,多线程用这个方法

代码:
program main

    implicit none 

    real(kind=4)    :: t1,t2
    integer         :: int1,int2
    integer         :: ii,jj,kk
    character(len=10)   :: time1,time2
    character(len=8)    :: thedate
    character(len=12)   :: thetime


    write(*,*) 'date_and_time:'
    call date_and_time(thedate,time1)

    do ii = 1,10000
        do jj = 1,100000
            kk = jj 
        enddo
    enddo 

    call date_and_time(thedate,time2)

    write(*,*) 'date: ',thedate
    write(*,*) 'time1: ',time1
    write(*,*) 'time2: ',time2
    write(*,*) 'time2 is ',time2(1:2) // ':' // time2(3:4) // ':' // time2(5:10)

    read(time1,*) t1
    read(time2,*) t2

    write(*,*) 'time:', t2-t1

    write(*,*) ' '
    write(*,*) 'cpu_time:'

    call cpu_time(t1)

    do ii = 1,10000
        do jj = 1,100000
            kk = jj 
        enddo
    enddo 

    call cpu_time(t2)

    write(*,*) 't1:',t1 
    write(*,*) 't2:',t2 
    write(*,*) 't2-t1=',t2-t1

    write(*,*) ' '
    write(*,*) 'system_clock:'

    call system_clock(int1)

    do ii = 1,10000
        do jj = 1,100000
            kk = jj 
        enddo
    enddo 

    call system_clock(int2)

    write(*,*) 'int1: ', int1
    write(*,*) 'int2: ', int2
    write(*,*) 'unit is ms'
    write(*,*) '(int2-int1)/1000. is ' , (int2-int1)/1000.
    
end

结果:

 date_and_time:
 date: 20190111
 time1: 112638.795
 time2: 112642.070
 time2 is 11:26:42.070
 time:   3.27343750    
  
 cpu_time:
 t1:   3.27646708    
 t2:   6.54442978    
 t2-t1=   3.26796269    
  
 system_clock:
 int1:    120586558
 int2:    120589826
 unit is ms
 (int2-int1)/1000. is    3.26799989  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值