Probleme mit Zeitfunktionen
-
Hallo,
ich muss Performancemessungen machen und hab drei numerische Algorithmen, die ich miteinander vergleichen soll.
Ich hab <ctime> inkludiert und mache es folgendermaßen:
... // Zeitmessung (in Sekunden) - Start clock_t start = clock(); cout while (...) { // Jacobi-Verfahren } // Zeitmessung (in Sekunden) - Ende clock_t ende = clock(); double gesamt = difftime(ende,start); cout << "Start: " << start << endl; cout << "Ende: " << ende << endl; return countIteratios; }Allerding bekomme ich immer Folgendes:
Start: 0 Ende: 0Was soll ich tStart: 0
Ende: 0
Warum bekomme ich immer 0en angezeigt?Fange ich etwas falsch ab? Vorher hatte ich die difftime()-Funktion benutzt und das Ergebnis durch CLOCKS_PER_SEC geteilt, aber hab trotzdem 0 herausbekommen. Was mache ich falsch?
-
Du kannst mal gettimeofday ausprobieren.
-
Ah, danke. Ich haber aber ein merkwürdiges Ergebnis:
// Zeitmessung - Start timeval start, end; gettimeofday(&start, 0); // Strukt für Start, Zeitzone while (...) { // Jacobi } // Zeitmessung - Ende gettimeofday(&end, 0); cout << "Sekunden und Mikrosekunden am Anfang: " << start.tv_sec << ':' << start.tv_usec << endl; cout << "Sekunden und Mikrosekunden am Ende: " << end.tv_sec << ':' << end.tv_usec << endl;Ich hab mehr Sekunden als Mikrosekunden??? Die Mikrosekundenanzahl "start.tv_usec" müsste doch viel größer sein als die Sekundenanzahl "start.tv_sec" oder sehe ich gerade etwas vollkommen falsch???
-
Es sind 8 Stunden 4 Minuten 30 Sekunden und 4 Mikrosekunden vergangen seit der letzten Ansage.
-
Achso. Wahrscheinlich wirds gemacht, weil die Zahl doch einfach zu groß wäre, sie in Mikrosekunden anzuzeigen, oder?
Kann ich eigentlich trotzdem zwei miteinander vergleichen, also:
long diff = end.tv_usec - start.tv_usec;, auch wenn sie ausgeschrieben das bedeuten, was "Zeitansage" gesagt hat?