Às vezes, ao otimizar o código, é necessário cronometrar determinadas partes do código, eu venho usando o seguinte há anos, mas fiquei imaginando se existe uma maneira melhor / mais simples de fazer isso?
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
Oscilação isópcica
fonte
fonte
-pg
,-g
é para símbolos de depuração (também interessante, mas não é obrigatório)Conforme mencionado pelo icurays1, a criação de perfil é a melhor. Você também pode simplificar um pouco o acima ...
onde o módulo utils contém ...
Se você tiver muitas seções, passe uma string, por exemplo, "section_id" em toc para que ela imprima o ID / nome junto com o tempo.
fonte
t1
et2
global, mas passart1
como parâmetro para ambas as funções, para permitir vários temporizadores. Você também pode simplesmente retornar a hora, não imprimir nada.