CPU Stoppuhr Funktion
-
Hallo zusammen,
wie frage ich die CPU zeit als ganzzahligen Wert ab um eine Aussage über die Rechenzeit meines Code zu bekommen?
int main(int argc, char *argv[]) { int elapsed_time=0; // Alle Zeiten der Stoppuhr sind ganzzahlig int time=cputime; // aktuelle CPU Zeit abfragen ??????WIE GEHT DAS????? cpu_rumschicken; // nur ein Beispiel einer rechenintensiven Anwendung elapsed_time=cputime-time; // aktuelle CPU Zeit abfragen und Zeit vor // rechenintensiver Anwendung abziehen WIE GEHT DAS? printf("Das Programm benötigt zur Ausführung %d millisekunden",elapsed_time); system("PAUSE"); return 0; }
Vielen Dank,
Euer Kevin
-
time() liefert die Systemzeit (in Sekunden seit 1.1.1970), clock() die Zeit seit Programmstart (in Clock-Ticks). Such dir aus, was besser passt.
(falls dir beides zu ungenau ist, bleiben noch spezifische Funktionen des Betriebssystems als Alterantive)
-
Vielen Dank für die schnelle Antwort. CPU-Ticks zu zählen wäre für mich die elegantere Option. Wo kann ich dazu Beispiele finden? (Wg. Bibliothek und Aufruf)
Danke schön!CStoll schrieb:
time() liefert die Systemzeit (in Sekunden seit 1.1.1970), clock() die Zeit seit Programmstart (in Clock-Ticks). Such dir aus, was besser passt.
(falls dir beides zu ungenau ist, bleiben noch spezifische Funktionen des Betriebssystems als Alterantive)
-
z.B. in der MSDN unter "clock()"
In Kurzfassung:
#include <time.h> int main(int argc, char *argv[]) { clock_t time=clock(),elapsed_time; cpu_rumschicken; // nur ein Beispiel einer rechenintensiven Anwendung elapsed_time=clock()-time; printf("Das Programm benötigt zur Ausführung %d millisekunden",elapsed_time*1000/CLOCKS_PER_SEC); system("PAUSE"); return 0; }
-
Wenn du Windows verwendest, schau dir QueryPerformanceFrequency() und QueryPerformanceCounter() an.
Wenn du auf x86 arbeitest und dein Betriebssystem es zulässt, kannst du auch RDTSC verwenden. http://en.wikipedia.org/wiki/RDTSC
Beachte die dort beschriebenen potentiellen Probleme mit RDTSC!
-
Vielen Dank für die Antwort! Das funktioniert. Es geht nur um den Test eines simplen Algorithmus der später auf einem embedded-prozessor läuft.
CStoll schrieb:
z.B. in der MSDN unter "clock()"
In Kurzfassung:
#include <time.h> int main(int argc, char *argv[]) { clock_t time=clock(),elapsed_time; cpu_rumschicken; // nur ein Beispiel einer rechenintensiven Anwendung elapsed_time=clock()-time; printf("Das Programm benötigt zur Ausführung %d millisekunden",elapsed_time*1000/CLOCKS_PER_SEC); system("PAUSE"); return 0; }
-
lovepulse schrieb:
Es geht nur um den Test eines simplen Algorithmus der später auf einem embedded-prozessor läuft.
dafür sind aber irgendwelche performancemessungen auf PCs nicht geeignet...
-
Jo, besser wäre da gleich einen Timer auf dem Target zu benutzen. Oder halt das Oszi
-
TactX schrieb:
Oder halt das Oszi
das ist das einzig wahre
ohne ist man blind...