Parfois, tout en optimisant le code, il est nécessaire de chronométrer certaines parties du code, j'utilise les éléments suivants depuis des années, mais je me demandais s'il y avait une manière plus simple / meilleure de le faire?
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)
la source
-pg
,-g
est pour les symboles de débogage (également intéressant, mais pas obligatoire)Comme mentionné par icurays1, le profilage est le meilleur. Vous pouvez également simplifier légèrement ce qui précède ...
où le module utils contient ...
Si vous avez plusieurs de ces sections, passez une chaîne, par exemple, "section_id" dans toc afin qu'il imprime l'id / nom avec le timing.
la source
t1
ett2
global, mais plutôt de passert1
en paramètre aux deux fonctions, pour permettre plusieurs minuteries. Vous pouvez également simplement renvoyer l'heure, ne rien imprimer.