zeit bis auf ms ermitteln
-
Hallo,
wie kann man die Zeit bis auf ms genau ermitteln. Ich mpchte in einem kleinen Programm die Zeit stoppen. Ich sende was los und warte auf die Antwort. Die zeit dazwischen möchte ich stoppen, dazu muss ich die zeit in ms haben . Ich möchte auch nciht nur die differenz dann haben, sondern die zeiten, bis auf ms angegeben.
Geht das?
-
Ja es geht. Du musst dir dazu aber erstmal eine entsprechende Bibliothek suchen, die das kann. Die Standardfunktionen bieten dazu leider nichts.
-
#include <stdio.h> #include <time.h> int main(int argc, char *argv[]) { int start; int milli; start = clock(); for (int i=0;i<1000000000;i++); //dauert bei mir ~3500ms milli = (int)((clock()-start)*1E3/CLOCKS_PER_SEC); printf("%d\n", milli); return 0; }
-
Kannst du das mal für mich aufschlüsseln:
*1E3/CLOCKS_PER_SEC);
-
clock() liefert die von einem programm verbrauchte cpu-zeit in ticks seit dem programmstart.
Die Variable CLOCKS_PER_SEC ist in time.h definiert und enthält, wie
sich erahnen lässt, die anzahl an ticks pro sekunde.
Nun teilt man die Differenz aus End- und Anfangsticks des Programms durch
die ticks pro sekunde und hat dann die Anzahl an Sekunden, die die Schleife
dauert. Das ganze dann noch mal 10^3 also 1E3 nehmen, um die vergangenen
Millisekunden zu ermitteln.
-
Hallo,
ich habe die Zeimessung mal bei mir in ein Programm eingebaut. Dabei frage ich die Antwortzeit eines Programms ab. Ich habe das ganze in eine Schleife eingebaut, so dass die Antwortzeit mehrfach hintereinander abgefragt werden soll. Beim erste mal wird z.B. 15ms ausgegeben, dann aber nur noch 0. Woran könnte das denn liegen?
for(int ii= 0; ii < anzahl; ii++) { start = clock(); send(sock, name, sizeof(name),0); while((nbytes = recv(sock, buf, sizeof(buf), 0)) > 0) { if(nbytes == -1) printf("error\n"); milli = (int)((clock()-start)*1E3/CLOCKS_PER_SEC); printf("Antwortdauer: %d ms\n", milli); }
Gruß
Uwi
-
Tag,
beim ersten Mal, wartet er wahrscheinlich wirklich auf ankommende Daten. Beim
jeweils naechsten Schleifendurchlauf sind die Daten allerdings bereits vorhanden,
daher muss er nicht mehr warten.mfg
v R