timer funktionen?

lordfritte

Erfahrenes Mitglied
Hallo gibt es in C timer funktionen um eine zeit in ms zu messen?
EDIT: ich habs, es geht mit clock()
 
Zuletzt bearbeitet:
Ok es geht doch nicht, wenn ich vor der Schleife ein clock() in einem clock_t timer oder int timer speichere und ich nach der schleife mit einem clock verrechne, kommt 0 raus, weil in timer und clock() das selbe steht.
 
Also bei mir geht's so:
C++:
#include <ctime>

clock_t start, finish;
start = clock();

// ...

finish = clock();
long lResult = finish - start;
/EDIT:
Um wirklich Millisekunden zu erhalten, sollte man lieber sowas schreiben:
C++:
double dResult = (static_cast<double>(finish - start)) / CLOCKS_PER_SEC * 1000.0;
Gruß
MCoder
 
Zuletzt bearbeitet:
Hallo,

Nanosekunden genau vlt. nicht gerade, aber wenn du eine x86 Architektur besitzt, dann könnte man über inline assembler den TSC der CPU auslesen. Das ist ein 64 Bit Register welches die Anzahl der Zyklen seit Start der CPU zählt. Diesen Wert teilst du durch die Taktrate bzw Frequenz deines Prozessors und hast somit die Zeit die vergangen ist seit dem Start deiner CPU. Die Auflösung hängt dabei logischerweise von der Taktrate deines Prozessors ab.
Wie das mit dem Inline Assembler funktioniert hängt stark von dem von dir verwendeten Compiler ab.

Gruß,
RedWing
 
Suche mal nach dem Stichwort "High Resolution Timer". Ich hab's selber noch nicht verwendet, habe aber dunkel in Erinnerung, dass es bei Windows da API-Funktionen für gibt. Genauigkeit und Auflösung sind allerdings systemabhängig (Hardware).

Gruß
MCoder
 
Hallo,

Nanosekunden genau vlt. nicht gerade, aber wenn du eine x86 Architektur besitzt, dann könnte man über inline assembler den TSC der CPU auslesen. Das ist ein 64 Bit Register welches die Anzahl der Zyklen seit Start der CPU zählt. Diesen Wert teilst du durch die Taktrate bzw Frequenz deines Prozessors und hast somit die Zeit die vergangen ist seit dem Start deiner CPU. Die Auflösung hängt dabei logischerweise von der Taktrate deines Prozessors ab.
Wie das mit dem Inline Assembler funktioniert hängt stark von dem von dir verwendeten Compiler ab.

Gruß,
RedWing

Das habe ich schon versucht, dass ist mir aber zu unzuverlissig, da kommt alles raus nur nicht das was rauskommen soll.
 
Gibt es nichts fertiges?
Wie z.b. timer_start() und timer_end() und timer_end() gibt aus wie viel Nanosekunden zwischen timer_end() und timer_end() vergangen sind?
 
Zurück