我正在使用Fortran90(使用gfortran编译)中的system_clock
函数,用如下方式:
! Variables for clock
integer count_0, count_1
integer count_rate, count_max
double precision time_init, time_final, elapsed_time
! Starting time
call system_clock(count_0, count_rate, count_max)
time_init = count_0*1.0/count_rate
.... Main code
! Ending time
call system_clock(count_1, count_rate, count_max)
time_final = count_1*1.0/count_rate
! Elapsed time
elapsed_time = time_final - time_init
! Write elapsed time
write(*,1003) int(elapsed_time),elapsed_time-int(elapsed_time)
1003 format(' Wall Clock = ',i0,f0.9)
请问我是否正确使用了这个函数。实际上,我没有为count_rate
和count_max
指定一个值,但我猜想它们有默认值。此外,似乎我必须考虑count_0
或count_1
超过count_max
的情况,对吗?正如您所看到的,为了美化格式,我已经将流逝时间的秒数和小数部分拆分开来。
count_0
和count_1
永远不会大于count_max
。 - francescalus