Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [c] - clock() gibt falsche Werte zurück



maxxle
09-12-2004, 13:10
Ich versuche die Zeit eines Algorithmus auf einem Linux-System zu messen.

Hier das Programm:


#include <stdio.h>
#include <time.h>


int main() {
clock_t starttime, stoptime, difftime;

starttime = clock();

// Use time
int i=0;
int k=0;
for(i;i<9000000;i++) {

k+=i;
}
sleep(2);

stoptime = clock();
difftime = stoptime - starttime;

printf("Starttime: %10.6f\n", starttime/CLOCKS_PER_SEC);
printf("Stoptime: %10.6f\n", stoptime/CLOCKS_PER_SEC);
printf("Time: %8.31f\n" ,(difftime/CLOCKS_PER_SEC));
return 0;
}



Und hier die Ausgabe nach dem Compilieren:


Starttime: -1.999352
Stoptime: -1.999352
Time: -1.9993515014648437500000000000000


Habe auch schon andere Parameter für printf() mitgegeben, funktioniert aber auch nicht.
Ist nur was bei der Ausgabe falsch formatiert oder warum bekomme ich so seltsame Werte?

wraith
09-12-2004, 14:13
CLOCKS_PER_SEC ist eine Ganzzahlkonstante, und deine anderen Variablen vom Typ clock_t auch.
Ganzzahl durch Ganzzahl ist wieder eine Ganzzahl, und du sagst printf, daß er ein double erwarten soll.
Du müßtest also vorher einen der Operanden auf double casten


printf("Starttime: %10.6f\n", (double)starttime/CLOCKS_PER_SEC);
....

maxxle
09-12-2004, 14:17
Danke!

Damit funktioniert es!

Joghurt
09-12-2004, 14:37
Einfacher ist es, ein Programm zu schreiben, dass den Algorithmus ein paar tausendmal durchlaufen lässt und sich dann beendet. Dann kannst du die Zeit ganz einfach mit
time ./dein_programm laufen lassen und bekommst die Laufzeit (mit/ohne Plattenzugriffen) angezeigt.