Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Zeit mit Turbo Pascal zählen





Frage

Hallo, scheinbar gabs ein Problem mit dem Forum und mein Beitrag ist verschwunden.. Nun denn, auf ein neues! Ich möchte die echte Zeit mit Turbo Pascal zählen. Hier erstmal das Programm: ------------------------------------------ PROGRAM Benchmark; USES crt; VAR zahl: real; PROCEDURE starten; BEGIN clrscr; writeln; write('====================================================='); writeln; write(' Alexanders CPU-Benchmark'); writeln; write('====================================================='); writeln; writeln; zahl:=0; writeln; writeln; write('Bitte drcken Sie eine beliebige Taste, um das Benchmarkprogramm zu starten'); readln; END; PROCEDURE hochzaehlen; BEGIN clrscr; REPEAT zahl:=zahl+1; write('Derzeitiger Rechenstand: ',zahl:1:0,' Durchlaeufe'); writeln; UNTIL zahl=20000; END; PROCEDURE ausgabe; BEGIN clrscr; writeln; writeln; write('Dein Computer brauchte x Sekunden fuer 20000 Durchlaeufe'); END; BEGIN starten; hochzaehlen; ausgabe; READLN; END. ------------------------------------------ Nun möchte ich am Ende Ausgeben, wielange der CPU zum berechnen gebraucht hat. Dieses geht natürlich nur, wenn er die Zeit mitzählt. Die Frage ist nur: wie? Vielleicht kann mir jemand helfen :) Vielen Dank

Antwort 1 von drago

Hier hast du das ganze Programm:
Ich habe statt zählvariable, eine FOR-Schleife genommen.
Am leichtesten geht es mit Get-/Settime Funktion
(Achtung DOS in der USES Zeile)
Wenn du die Zahlenausgabe unterdrückst, also gar nicht erst ausgibst, sparst du kiloweise Zeit..





program zeit;
uses dos,crt;


var
zahl:longint;
std,minute,sek,sek100:word;

begin
clrscr;
settime(0,0,0,0);
for zahl:=1 to 20000 do
write (zahl:10);

{deine Textausgabe etc}


gettime(std,minute,sek,sek100);
write (std,':',minute,':',sek,':',sek100);
readln
end.




Achte aber:

Zahl:4 gibt die Zahl vierstellig aus
Zahl:4:2 ergibt vierstellige Ganzzahl, zweistellige Nachkommazahl, aber nur bei FLIESSKOMMA...(also real, single, double..)
(sonst gibts Fehlermeldung)



.

Antwort 2 von drago

P.S.

Mit der Funktion SetTime wird die Systemzeit auf
Null gesetzt.
Also nicht vergessen:
Nach dem Test wieder aktualisieren...

Eine Andere Möglichkeit hast du, wenn du die
Sekunden, bzw. die Hundertstel-Sekunden als Taktgeber programmierst.
Dann brauchst du die Systemzeit nur auslesen...

Oder du schreibst eine Formel, die die zwei Gettime-Aufrufe voneinander abzieht...
Die professionellere Art ist aber, den eingebauten
Timer in der Systemuhr zu benutzen.
Erfordert aber BIOS-Aufrufe.



.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: