zeitmessen
-
hi leute
ich soll die zeit messen von einem isakmp schlüssel austausch.
da habe ich mir gedacht ich stelle einfach einen telnet verbindung her zum anderen host, und wenn ich dann eine antwort bekomme, das ist der schlüssel austausch beendet.(habt ihr ne andere idee???)
aber das eigendlich wichtige ist wie messe ich eigendlich die zeit zwischen 2 handlungen eines programms in millisecunden ? brauche nur einen ganz einfachen code
das geht doch irgendwie mit time(&t) bla bladanke für die hilfe
-
Mit welchem Betriebssystem arbeitest du, diese Funktionen sind immer OS abhängig.
-
Solaris9
habe aber den gcc compiler.
habe es mitT0 =clock();
send(böla,bla,bla);
T1=clock();(T1-T0)*1000/CLOCKS_PER_SEC
kommt aber immer 0.0000 raus
auch wenn ich zwischen den beinen clock() noch ein sleep(9)einfügedanke für die hilfe den das problem geht mir schönlangsam auf die ei.....
-
wenn ich jedoch etwas berechnen lasse und das sleep() raus werfe, bekomme ich werte raus, jedoch wenn
ein revc() oder send() habe ist es ja das selbe wie sleep() weil ich ja keine prozessorzeit habe, den bei send() etc. ist es ja nur ein warten und kein berechnen, gibt es denn keine funktion mit der ich zeit in millisecunden messen kann. so das ich weiß wie lange mein verbindingsaufbau gedauert hat ?
-
Was macht die clock funktion?
Gibt es keine Funktion die die Uhrzeit inclusive Sekunden angibt(mit allen Problemen von Zeit und Multitasking)?
Gibt es keine Funktion die si benutzte Processorzeit angibt?.Timings sollte man prinzipiell niucht auf einzeildurchläufe machen. Mann sollte immer dafür sorgen das
diese Prozesse in Schleifen ablaufen, die groß gegen die typiesche Taskswitching Zeit des OS sindMesse des Zeitbedarfs für 1000 Durchläufe und umrechnen auf einen Durchlauf.
Und vor allem die manpages für Zeit und performancemessungen durchsuchen.
Es gibt in Unix Programme die anzeigen wieviel CPU-Zeit für einen Process gebrauchrt werden.
-
tut mir leid, aber deine antwort ist nicht gerade hilfreich.
@pad
ich will die zeit von einem connect() messen und du sagts," ne macht das nicht weil das besser geht mit rechenzeit ala schreifen etc."
das weiß ich auchgruß mart
-
habe es jetzt raus wenn es jemand haben will...
(getestet unter solaris9 mit gcc )#include <stdio.h> #include <time.h> #define MAIN //#define DEBUG float GetTimeDelta(struct timeval *time1){ float timereturn; struct timeval time2; time2.tv_usec=0; time2.tv_sec=0; if(time1->tv_usec==NULL&&time1->tv_sec==NULL ){ timereturn = 0.0; gettimeofday(time1,NULL); } else{ gettimeofday(&time2,NULL); if(time1->tv_usec > time2.tv_usec){ timereturn =((1000000.0+(time2.tv_usec-time1->tv_usec))/1000000.0); time2.tv_sec-=1; // printf(" milliseconds 1>2:%f\n",timereturn); } else{ timereturn =(time2.tv_usec-time1->tv_usec)/1000000.0; //printf(" milliseconds 2>1:%f\n",timereturn); } timereturn+=(time2.tv_sec -time1->tv_sec); } #ifdef DEBUG printf("time1 seconds:%d\n",time1->tv_sec); printf("time1 milliseconds:%d\n",time1->tv_usec); printf("time2 seconds:%d\n",time2.tv_sec); printf("time2 milliseconds:%d\n",time2.tv_usec); return timereturn; #endif DEBUG } #ifdef MAIN int main() { struct timeval time; time.tv_sec =0; time.tv_usec=0; int i=100000; int a=0; printf("start time %f\n",GetTimeDelta(&time)); //time consuming sleep(4); while(i--) a= i%12; //end time consuming printf("end time %f\n",GetTimeDelta(&time)); } #endif
-
In einem Multiuser/Multitaskingsystem ist man IMO nicht in der lage die korrekte zeit für einen einzelnen kurzen Vorgang zu ermitteln, da zuviele Störgrößen durch das OS vorhanden sind. Ausnahme, manche (einige wenige) Systeme im embedded bereich zählen die "ausgeführten Cyclen" für eine thread.
Deshalb der Vorschlag anstelle von einem Connect 1000 Connects zu messen um eine hinreichend realisteischen Wert zu bekommen.
-
Vorsicht bei dieser Messung, der wert für eine einzelnes ereignis (z.B. connect)
hängt massiv von der OS-Last zu diesem Zeitpunkt ab.siehe meinen Vorschlag:
[quote}Gibt es keine Funktion die die Uhrzeit inclusive Sekunden angibt**(mit allen Problemen von Zeit und Multitasking)**? [/quote]Du musst viele von diesen Messungen Durchführen, extreme Ausreisser ausfiltern, dann Mittelwert und standardabweichung berechnen und hast dann eine grobe Aussage über die durchschnittliche Zeit für ein connect.