A veces, mientras se optimiza el código, es necesario cronometrar ciertas partes del código, he estado usando lo siguiente durante años, pero me preguntaba si hay una manera más simple / mejor de hacerlo.
call system_clock(count_rate=clock_rate) !Find the time rate
call system_clock(count=clock_start) !Start Timer
call do_something_subroutine !This is what gets timed
call system_clock(count=clock_stop) ! Stop Timer
e_time = real(clock_stop-clock_start)/real(clock_rate)
optimization
fortran
profiling
Oscilación Isopícnica
fuente
fuente
-pg
,-g
es para símbolos de depuración (también interesante, pero no obligatorio)Según lo mencionado por icurays1, la mejor elaboración de perfiles es. También puede simplificar ligeramente lo anterior ...
donde el módulo utils contiene ...
Si tiene muchas de estas secciones, pase una cadena, por ejemplo, "section_id" en toc para que imprima la identificación / nombre junto con el tiempo.
fuente
t1
yt2
global, sino pasart1
como parámetro a ambas funciones, para permitir múltiples temporizadores. También puede devolver el tiempo, no imprimir nada.