Zeitmessung mit Clock
-
Hallo!
Ich würde gerne zur Performancezwecken messen, wie lange mein Programm für eine bestimmte Aufgabe braucht.
Das habe ich derzeit so gelöst (in Anlehnung an http://www.willemer.de/informatik/cpp/timelib.htm ganz unten):
#include <time.h> .. clock_t start,end; start = clock(); //do something end = clock(); double totaltime = difftime(end,start);Also Ausgabe erhalte ich:
the programm required 3170000.000000 secondsDas ist natürlich Blödsinn. Wenn dann schon 3,17. Das könnte ev. passen.
Hier wird aber deutlich gesagt, dass difftime die Differenz in Sekunden umrechnet: http://www.cppreference.com/wiki/c/date/difftime?s[]=difftimeWas also läuft falsch?
Herzlichen Dank,
Anna
-
Clock liefert keine Sekunden:
clock()
-
richtig, aber so wie ich es verstehe tut es difftime.
oder muss ich das auch noch druch clocks_per_sec teilen?
-
Tipp: wenn es nicht nur Standard-C++ sein muss und du zufällig unter Windows programmierst, kannst du auch QueryPerformanceCounter benutzen (ist recht genau).
-
Hallo!
Ja, davon habe ich gehört.
Ich programmiere jedoch unter Linux.
-
-
hallo!
Wenn ich durch CLOCKS_PER_SEC teile kommen vernünftige Sachen raus.
Wieso schlagt ihr mir denn andere Funktionen vor? Ist clock() nicht so geeignet?
Auf der Seite hier: http://www.willemer.de/informatik/cpp/timelib.htm
klingt es so, als wäre clock für Perfomancemessungen gerade gut.
-
AnnaS schrieb:
richtig, aber so wie ich es verstehe tut es difftime.
oder muss ich das auch noch durch clocks_per_sec teilen?difftime erwartet Werte vom Typ time_t und clock liefert clock_t. Kann sein, dass das ineinander konvertierbare Werte (z.B: beide long) sind, aber Ihre Bedeutung ist eine andere.
Zum Thema Zeitmessung siehe hier.