- 积分
- 59952
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 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
|
|