M. Pester - LV im SS 2017

Zeitmessung in Fortran 90

(manchmal auch schon in Fortran 77)

( als PDF-Datei )

  • Datum und Uhrzeit (als Zeichenkette und Integer-Feld)
    Die angegebenen Vereinbarungen sind jeweils als Mindestlänge zu verstehen.
          character date*8, time*10, zone*5
          integer values(8)
           ...
          call date_and_time(date,time,zone,values)
    
    
    Die zurückgegebenen Werte der Parameter haben das folgende Format:

    date JJJJMMTT values(1) Jahr values(5) Stunde
    time hhmmss.sss values(2) Monat values(6) Minute
    zone ±hhmm values(3) Tag values(7) Sekunde
    values(4) Differenz zur Weltzeit values(8) Millisekunde
  • Systemzeit (Abfrage des rechnerinternen Zeitgebers)
          integer count, count_rate, count_max
           ...
          call system_clock(count, count_rate, count_max)
    
    
    Bedeutung der Rückgabewerte:

    count Rechnerabhängiger Zählerwert
    count_rate Wie oft wird count pro Sekunde erhöht
    count_max nach Erreichen dieses Wertes beginnt count wieder bei 0

    Beispiel:

          integer start, ende, rate, cmax
          real    time
          call system_clock(start,rate,cmax)
          ...          ! Anweisungen, deren Dauer zu messen ist
          call system_clock(ende)
          time=float(ende-start)/float(rate)   ! evtl. cmax beachten!
          write(*,*) "Zeit in Sekunden: ",time
    
    
  • CPU-Zeit (die ,,reine'' Rechenzeit)
          real time
           ...
          call cpu_time(time)
    
    
    Rückgabewert des Parameters time ist die bisher (seit Start des Programms) verbrauchte CPU-Zeit mit der Maßeinheit ,,Sekunde''.
    Ein negatives Ergebnis deutet an, dass der Rechner keine CPU-Zeiten messen kann.
Bemerkung: Mit der Messung der CPU-Zeit erhält man die reine Hardwareleistung, aber für die Nutzung eines Programms ist es oft interessanter, wie lange man auf das Ergebnis warten muss (also die ,,Echtzeit''-Messung).


File translated from TEX by TTH, version 3.00.