clock() gibt immer 0 zurück
-
Hi(gh)!
Laut diverser C/C++-Referenzen soll die Funktion clock() aus time.h die aktuelle Prozessorzeit seit Programmstart zurückgeben. Wenn ich aber folgendes Programm:
#include <stdio.h> #include <time.h> int main() { unsigned long int i; printf("\nAktuelle Startzeit ist: %li.\n", clock()); for (i=0; i < 3000000000; i++); printf("Laufzeit war %.3f", clock()); printf("\n"); return 0; }
kompiliere und starte, bekomme ich immer nur folgende Ausgaben:
Aktuelle Startzeit ist: 0.
Laufzeit war 0.000
Wieso?
Bis bald im Khyberspace
Yadgar
Now playing: The Groover (T. Rex)
-
Der Formatspecifier bei printf muss zum Variablentyp passen.
Du hast einmal %li und dann %.3f
%li ist für long integer
%f ist für float und double.Welchen Typ gibt denn clock() zurück?.
Zudem kann dein Compiler die Leerschleife auch wegoptimieren, da dort sowieso nichts passiert.
-
Hi(gh)!
DirkB schrieb:
Der Formatspecifier bei printf muss zum Variablentyp passen.
Du hast einmal %li und dann %.3f
%li ist für long integer
%f ist für float und double.Stimmt, jetzt sehe ich es auch...
DirkB schrieb:
Welchen Typ gibt denn clock() zurück?.
clock_t, auf meinem System als long integer definiert!
DirkB schrieb:
Zudem kann dein Compiler die Leerschleife auch wegoptimieren, da dort sowieso nichts passiert.
Nein, macht er nicht, ich habe durchaus eine Verzögerung von ungefähr 10 Sekunden...
Hier die korrigierte Version:
#include <stdio.h> #include <time.h> int main() { unsigned long int i; printf("\nAktuelle Startzeit ist: %li.\n", clock()); for (i=0; i < 3000000000; i++); printf("Laufzeit war %.3f", (float)clock()/CLOCKS_PER_SEC); printf("\n"); return 0; }
Die Ausgabe:
Aktuelle Startzeit ist: 0.
Laufzeit war: 8.860
Kommt hin! Danke für den Hinweis!
Bis bald im Khyberspace!
Yadgar
Now playing: It Can Happen (Yes)