Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Použitím vnútornej funkcie `CPU_Time` (najjednoduchšie, ale menej presné):
Toto je najjednoduchšia metóda zabudovaná priamo do spoločnosti Fortran. `CPU_Time` Vráti čas procesora, ktorý používa program od začiatku v sekundách. Všeobecne je to menej presné ako iné metódy, najmä na viacjadrových systémoch, kde nemusí odrážať skutočný čas na stenu.
`` Fortran
program na časovanie
implicitné žiadne
real ::start_time, end_time, uplynuté_time
volajte CPU_time (start_time)
! Váš kód, ktorý sa má načasovať, ide sem
! ... zdĺhavé výpočty ...
volajte CPU_Time (end_time)
elapsed_time =end_time - start_time
Print *, „Time uplynutý procesor:“, voliteľné_time, „sekundy“
koncový program TIMING_example
`` `
2. Pomocou vnútorného podprogramu `system_clock` (presnejšie, závislá od platformy):
`System_clock` poskytuje väčšiu kontrolu a potenciálne vyššiu presnosť. Umožňuje vám špecifikovať jednotky vráteného času (napr. Seconds, miliseConds, MicroseConds). Dostupné jednotky a presnosť sú však závislé od systému.
`` Fortran
Program TIMING_EXMTOR_SSTEMSTION_CLOCK
implicitné žiadne
Celé číslo, parameter ::count_rate =1000! Miera počtu v milisekundách
Celé číslo ::start_count, end_count, eLpsed_count
Skutočné ::uplynuté_time
call system_clock (start_count, count_rate)
! Váš kód, ktorý sa má načasovať, ide sem
! ... zdĺhavé výpočty ...
call system_clock (end_count, count_rate)
elapsed_count =end_count - start_count
elapsed_time =real (elapsed_count) / real (count_rate)
Print *, „uplynulý čas:“, uplynul_time, „sekundy“
koncový program TIMING_EXAMPLE_SSTEM_CLOCK
`` `
3. Používanie knižníc špecifických pre platformu (najpresnejšie, najmenej prenosné):
Pre najvyššiu presnosť a najpresnejšie merania času na stenu, možno budete musieť prepojiť s knižnicami špecifickými pre operačný systém. Tento prístup je menej prenosný, pretože kód bude potrebovať úpravy pre rôzne systémy (Linux, Windows, MacOS).
* Linux (pomocou `getTimeofday`): Musíte deklarovať rozhranie funkcie „getTimeofday` z funkcie`
`` Fortran
Program TIMING_EXAMPLE_GetTimeOfday
Použite ISO_C_Binding
implicitné žiadne
Zahrňte „Time.h“ // alebo použite vhodnú alternatívu pre svoj kompilátor. Niektoré kompilátory nevyžadujú explicitné vrátane.
Typ (c_ptr) ::TV
celé číslo (c_int) ::rc
Dvojitá presnosť ::start_time, end_time, uplynuté_time
prideliť (TV)
rc =c_getTimeofday (TV, C_NULL_PTR)! Získajte čas začiatku
start_time =c_f_double (c_loc (tv)%čas) + c_f_double (c_loc (tv)%tv_sec)
! Váš kód, ktorý sa má načasovať, ide sem
! ... zdĺhavé výpočty ...
rc =c_getTimeofday (TV, C_NULL_PTR)! Získajte konečný čas
end_time =c_f_double (c_loc (tv)%čas) + c_f_double (c_loc (tv)%tv_sec)
DealLocate (TV)
elapsed_time =end_time - start_time
Print *, „uplynulý čas:“, uplynul_time, „sekundy“
koncový program Timing_example_getTimeOfday
`` `
Nezabudnite zostaviť s príslušnými príznakmi, aby ste sa spojili s potrebnými knižnicami (napr. `-Lrt` pre` getTimeofday` v systéme Linux). Presný príkaz kompilácie závisí od vášho kompilátora (Gfortran, IFORT atď.).
Vyberte metódu, ktorá najlepšie vyhovuje vašim potrebám. Pre jednoduché načasovanie je postačujúce `CPU_Time`. Pre lepšiu presnosť použite `System_Clock`. Pre najvyššiu presnosť a najpresnejší čas na stenu zvážte použitie knižníc špecifických pre platformu, ale pamätajte na dôsledky prenosnosti. Vždy si uvedomte, že rozlíšenie časovača sa v systémoch veľmi líši. Preto by ste nemali očakávať presnosť mikrosekundy na všetkých platformách a konfiguráciách.