Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Software >> quicktime >> Content
Hoe kan ik een timer in Fortran implementeren om de uitvoeringstijd van mijn programma te meten?
Fortran biedt verschillende manieren om een ​​timer te implementeren om de uitvoeringstijd te meten. De beste aanpak hangt af van uw behoefte aan precisie en draagbaarheid. Hier zijn drie veelgebruikte methoden:

1. Met behulp van de intrinsieke functie `CPU_TIME` (eenvoudigst, maar minder nauwkeurig):

Dit is de eenvoudigste methode, rechtstreeks in Fortran ingebouwd. `CPU_TIME` retourneert de processortijd die het programma sinds de start in seconden heeft gebruikt. Het is over het algemeen minder nauwkeurig dan andere methoden, vooral op multi-coresystemen waar het mogelijk niet de echte wandkloktijd weerspiegelt.

```fortran

programma timing_voorbeeld

impliciet geen

real ::starttijd, eindtijd, verstreken_tijd

bel cpu_time(start_time)

! Uw te timen code gaat hier

! ... langdurige berekeningen ...

bel cpu_time(end_time)

verstreken_tijd =eindtijd - starttijd

print *, "Verstreken CPU-tijd:", verstreken_tijd, " seconden"

eindprogramma timing_example

```

2. Met behulp van de intrinsieke subroutine `SYSTEM_CLOCK` (nauwkeuriger, platformafhankelijk):

`SYSTEM_CLOCK` biedt meer controle en potentieel hogere precisie. Hiermee kunt u de eenheden van de geretourneerde tijd opgeven (bijvoorbeeld seconden, milliseconden, microseconden). De beschikbare eenheden en precisie zijn echter systeemafhankelijk.

```fortran

programma timing_example_system_clock

impliciet geen

geheel getal, parameter ::count_rate =1000 ! Telsnelheid in milliseconden

geheel getal::start_count, end_count, verstreken_count

echt ::verstreken_tijd

bel system_clock (start_count, count_rate)

! Uw te timen code gaat hier

! ... langdurige berekeningen ...

bel system_clock(end_count, count_rate)

verstreken_telling =eind_telling - start_telling

verstreken_tijd =real(elapsed_count) / real(count_rate)

print *, "Verstreken tijd:", verstreken_tijd, " seconden"

beëindig het programma timing_example_system_clock

```

3. Platformspecifieke bibliotheken gebruiken (meest nauwkeurig, minst draagbaar):

Voor de hoogste precisie en meest nauwkeurige tijdmetingen op de wandklok moet u mogelijk een interface hebben met besturingssysteemspecifieke bibliotheken. Deze aanpak is minder draagbaar omdat de code aanpassingen nodig heeft voor verschillende systemen (Linux, Windows, macOS).

* Linux (met `gettimeofday`): Je zou een interface voor de functie `gettimeofday` moeten declareren vanuit het headerbestand ``. Dit omvat het gebruik van de module `ISO_C_BINDING` en een zorgvuldige omgang met typen. Voorbeeld (vereist foutafhandeling voor productiecode):

```fortran

programma timing_example_gettimeofday

gebruik ISO_C_BINDING

impliciet geen

include 'time.h' // Of gebruik een geschikt alternatief voor uw compiler. Sommige compilers vereisen geen expliciete include's.

type(c_ptr) ::tv

geheel getal(c_int) ::rc

dubbele precisie::starttijd, eindtijd, verstreken_tijd

toewijzen(tv)

rc =c_gettimeofday(tv, c_null_ptr) ! Begintijd ophalen

starttijd =c_f_double(c_loc(tv)%tijd) + c_f_double(c_loc(tv)%tv_sec)

! Uw te timen code gaat hier

! ... langdurige berekeningen ...

rc =c_gettimeofday(tv, c_null_ptr) ! Eindtijd ophalen

eindtijd =c_f_double(c_loc(tv)%tijd) + c_f_double(c_loc(tv)%tv_sec)

toewijzing ongedaan maken (tv)

verstreken_tijd =eindtijd - starttijd

print *, "Verstreken tijd:", verstreken_tijd, " seconden"

eindprogramma timing_example_gettimeofday

```

Vergeet niet om te compileren met de juiste vlaggen om te linken met de benodigde bibliotheken (bijvoorbeeld `-lrt` voor `gettimeofday` op Linux). Het exacte compilatiecommando is afhankelijk van uw compiler (gfortran, ifort, enz.).

Kies de methode die het beste bij uw behoeften past. Voor eenvoudige timing is `CPU_TIME` voldoende. Gebruik `SYSTEM_CLOCK` voor betere precisie. Voor de hoogste precisie en meest nauwkeurige wandkloktijd kunt u overwegen platformspecifieke bibliotheken te gebruiken, maar houd rekening met de implicaties voor portabiliteit. Houd er altijd rekening mee dat de timerresolutie sterk varieert tussen systemen. Daarom mag u geen microsecondeprecisie verwachten op alle platforms en configuraties.

Previous: Next:
  quicktime
·Wat is een tijdstempel? 
·Hoe heet de knop van een start…
·Wat bevindt zich in een snella…
·Is 40 wpm een ​​goede typsnelh…
·Hoe te openen SRT ondertitels …
·Hoe te verwijderen Sound op Qu…
·HOE STEL JE DE TIJD DATUM DAG …
·Hoe te QuickTime X Verwijder V…
·Hoe te FLV converteren naar Qu…
  Related Articles
Welke maatregelen kunnen worden genomen …
Wat is de betekenis van tijdssegmenten i…
Wat is de betekenis van het primaire att…
Wat is de betekenis van de werking van d…
Wat is de betekenis van overhead in comp…
Wat is de betekenis van efficiëntie in …
Wat is de rol van schema in programmeert…
Wat is de rol van schema in de informati…
Wat is het doel van het Windows-archiefk…
  Software Articles
·Hoe u zich afmeldt bij de Amazon-app of …
·Hoe je PPT Stop formaat Make My Text 
·Hoe SQL Server 2008 verwijderen 
·How to Get Rid van Uitroeptekens in iTun…
·Hoe de Malicious Software Removal Tool v…
·MKV naar AVI conversie 
·Hoe te Knight Rider 2 Download 
·Hoe maak je een vel Scheur Van Excel-wer…
·Hoe de Verloop toewijzen in Adobe Photos…
Copyright © Computer Kennis https://www.nldit.com