| 
 
	积分62618贡献 精华在线时间 小时注册时间2013-6-6最后登录1970-1-1 
 | 
 
 
 楼主|
发表于 2014-3-19 13:46:46
|
显示全部楼层 
| !timer_class.f95 MODULE Timer_Class
 IMPLICIT NONE
 INTEGER,PARAMETER::DBL=SELECTED_REAL_KIND(p=14)
 TYPE,PUBLIC:: Timer
 PRIVATE
 REAL(KIND=DBL)::save_Time
 CONTAINS
 PROCEDURE,PUBLIC::Start_Timer=>Start_Timer_Sub
 PROCEDURE,PUBLIC::Elapsed_Time=>Elapsed_Time_FN
 END TYPE Timer
 PRIVATE::Start_Timer_Sub,Elapsed_Time_FN
 CONTAINS
 SUBROUTINE Start_Timer_Sub(this)
 IMPLICIT NONE
 CLASS(Timer)::this
 INTEGER,DIMENSION(8)::value
 CALL date_and_time(VALUES=value)
 this%save_Time=86400.D0*value(3)+3600.D0*value(5)+60.D0*value(6)+value(7)+0.001D0*value(8)
 END SUBROUTINE Start_Timer_Sub
 REAL FUNCTION Elapsed_Time_FN(this)
 IMPLICIT NONE
 CLASS(Timer)::this
 INTEGER,DIMENSION(8)::value
 REAL(KIND=DBL)::current_Time
 CALL date_and_time(VALUES=value)
 current_Time=86400.D0*value(3)+3600.D0*value(5)+60.D0*value(6)+value(7)+0.001D0*value(8)
 Elapsed_Time_FN=current_Time-this%save_Time
 END REAL FUNCTION Elapsed_Time_FN
 END MODULE Timer_Class
 
 !timer_test.f95
 PROGRAM Timer_Test
 USE Timer_Class
 IMPLICIT NONE
 INTEGER::i,j
 INTEGER k
 TYPE(Timer)::t
 CALL t%Start_Timer()
 do i=1,10000
 do j=1,10000
 k=i+j
 end do
 end do
 write(*,'(A,F8.3,A)') 'Time =',t%Elapsed_Time(),' s'
 END PROGRAM Timer_Test
 
 | 
 |