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,-ges 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
t1yt2global, sino pasart1como parámetro a ambas funciones, para permitir múltiples temporizadores. También puede devolver el tiempo, no imprimir nada.