Czasami podczas optymalizacji kodu wymagane jest odmierzanie czasu niektórych fragmentów kodu, korzystam z poniższych od lat, ale zastanawiałem się, czy istnieje prostszy / lepszy sposób na zrobienie tego?
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
Oscylacja Isopycnal
źródło
źródło
-pg
,-g
jest dla symboli debugowania (również interesujące, ale nie wymagane)Jak wspomniano w icurays1, najlepsze jest profilowanie. Możesz także nieco uprościć powyższe ...
gdzie moduł utils zawiera ...
Jeśli masz wiele takich sekcji, przekaż ciąg, np. „Id_sekcji” in toc, aby wypisał identyfikator / nazwę wraz z timingiem.
źródło
t1
it2
globalne, ale raczej przekazaniet1
jako parametru do obu funkcji, aby pozwolić na wiele timerów. Możesz także zwrócić czas, nie drukować niczego.