clock() unter Linux Ubuntu
-
ich hab ein kleines Problem ich versuche die zeit in ms zu stoppen die ein Programm für die Ausführung braucht
/*----- START ZEIT ----*/ clock_t start; clock_t ende; float differenz; start = clock(); macht was kurz oder lang ende = clock(); differenz = (float)(ende - start) / (float)CLOCKS_PER_SEC; printf( "Differenz: %10.10f \n", differenz );
Problem die Ausgabe ist immer 0 bei mir hier Linux, bei einem Freund unter Windows geht es, einer eine Idee was das Problem ist?
-
Musst du nicht erst (end-start)*1000 rechnen, und dann durch die CLOCKS_PER_SECOND teilen, um ms zu erhalten?
Deine 0 wahrscheinlich deswegen, weil dein Programm unter ner Sekunde läuft.Probier mal
for(i=0; i<1000000000000; i++);
-
nein wie gesagt auf einer windowskiste geht es und die zeit ist auch 0 wenn ich bis 5 zählen kann
-
gibt doch mal
start
undend
aus und dann wirst du sehen, ob die Werte überhaupt unterschiedlich sind.
-
Also das hier
#include <stdio.h> #include <time.h> int main() { /*----- START ZEIT ----*/ clock_t start; clock_t ende; float differenz; int i; start = clock(); for(i=0;i<10000000;i++); ende = clock(); differenz = (float)(ende - start) / (float)CLOCKS_PER_SEC; printf( "Differenz: %10.10f \n", differenz ); return 0; }
ergibt bei mir
Differenz: 0.0700000003
und zwar unter Ubuntu 8.04...
-
hmm seltsam das kleine Testprogramm geht jetzt auch bei mir es liegt vermutlich wirklich daran, dass das Programm zu schnell läuft trotz 2er Sortierroutinen .
Hast du eine Idee wie man ganz kurze Zeiten Stoppen kann?
Viel Dank für deine Hilfe
-
im obigen Beispiel siehst du 70 millisec. + 300 picosec. . Noch höhere Auflösung?
-
anscheinend ja ist ein uni projekt das die laufzeit ausgeben soll und ich muß schon relativ hohe werte einsetzten damit der überhaupt was anzeigt sonst ist der einfach zu schnell
-
Schreib %10.15f für femtosec., %10.18f für attosec. ...
-
ok dank dir
-
curry-king schrieb:
im obigen Beispiel siehst du 70 millisec. + 300 picosec. . Noch höhere Auflösung?
Das dürften wohl eher Rundungsfehler sein, ne. Wäre ja sonst ein Phänomen ungeahnten Ausmaßes.
-
curry-king schrieb:
Schreib %10.15f für femtosec., %10.18f für attosec. ...
Lol
@Topic, benutz einfach größere Datenmengen ansonsten sagen die Tests nichts aus, da jederzeit ein Prozess/Interrupt dazwischen funken kann.