Frage

Ich schreibe ein Programm in Forran und brauche eine Möglichkeit, die Dauer des Programms auf Millisekunden zu berechnen. Ich habe die Funktion "date_and_time" verwendet, wodurch ich ein Array mit der Zeit des Systems in Stunden, Minuten, Sekunden und Millisekunden enthält.

Ich glaube, dass ich diese Funktion zu Beginn meines Programms aufrufen kann, um die aktuelle Zeit zu speichern, und dann die Funktion am Ende meines Programms erneut aufzurufen, um die neueste Zeit zu speichern. Aber wie würde ich danach die Dauer computerlich computerlich? Ich habe versucht, die Werte zu subtrahieren, aber die Millisekunden setzen zurück, wenn eine Sekunde vergeht, genau wie die Sekunden zurückgesetzt werden, wenn eine Minute vergeht. Wie wäre es am besten, dies zu nähern?

Hier ist das Programm:

       PROGRAM TEST_TIME_AND_DATE
          INTEGER I
          REAL J
          INTEGER TIME_A(8), TIME_B(8)
          CALL DATE_AND_TIME(VALUES=TIME_A)
          PRINT '(8I5))', TIME_A
          DO I = 0, 400000000
            J = I * I - J
          END DO
          CALL DATE_AND_TIME(VALUES=TIME_B)
          print '(8I5))', TIME_B
      END PROGRAM TEST_TIME_AND_DATE

Und hier ist das Ergebnis:

2011    6   11 -300    9   14   49  304
2011    6   11 -300    9   14   50  688

Ich bin mir nicht sicher, was ich hier tun soll, danke.

War es hilfreich?

Lösung

Sie können die Zahlen subtrahieren, dann alles in Millisekunden umwandeln und die MS, SEC in MS, Min in MS, HRS in MS, ...

In Ihrem Fall wäre dies

0 + 0 + 0 + 0 + 0 + 1*1000 + 384 = 1384 [ms]

Dieser Ansatz funktioniert auch gut mit Überläufen, da eine positive Zahl in einer Spaltenspalte negative Zahlen über die gleiche Basis umgewandelt wird. Z.B 0:58.000 zu 1:02.200 ergibt

1 * 60000 + (-56) * 1000 + 200 = 4200

Bitte beachten Sie, dass dies bis zu Tagen funktioniert, jedoch nicht mit Monaten, da sie keine gemeinsame Länge haben.

Andere Tipps

Wenn Sie eine verstrichene Uhrzeit wünschen, ist es einfacher, das intrinsische Prozedursystem zu verwenden, da es einen einzigen Zeitwertausgang bietet. (Es gibt zusätzliche Argumente, um Informationen über das Verfahren bereitzustellen, weshalb es sich um eine Prozedur anstelle einer Funktion handelt.) Siehe beispielsweise. http://gcc.gnu.org/onlinedocs/gfortran/system_005fclock.html. Wenn Sie die CPU -Nutzung zeitieren möchten, verwenden Sie CPU_Time. Für beide, zwei Anrufe, zu Beginn und am Ende des Programms, dann ein einfacher Unterschied. Sie können das Argument count_rate verwenden, um in Sekundenschnelle in die Zählung der Zeit umzuwandeln.

Sie können den Offset von einiger Startzeit (1. Januar 1970 für UNIX) in Sekunden oder Millisekunden berechnen. Der Unterschied in diesen Zahlen ist Ihre verstrichene Zeit.

(2011 - 1970) * (number of seconds in a year) +
(month of the year - 1) * (number of seconds in a month) +
(day of the month - 1) * (number of seconds in a day) + 
( ... )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top