Measure Time in Milliseconds
最近被Computer and Communication Networks的一份功課虐待中……
話說這份功課其中一條是要在Linux systems中用C或C++寫一個socket program, 用來計算RTT的. 這個RTT是指由client side send一個packet到server side, 再由server side立即送回給client side所需的時間. 因為這個時間很短, 所以至少需要milliseconds…
其他的部分都不算難, 只是基本的setup socket, send & read之類的. 唯一問題是平時見的examples都是TCP的, 但這次用的卻是UDP…….雖然是沒甚麼大差異, 但還是要小心看清楚~
好, 完成後, 卻被時間虐待了……time.h內的time(), clock()甚麼的, 全都不管用!!因為只準確至秒……距離微秒還有一大段路!!
今天, 終於找到答案了……用到的是sys/time.h內的gettimeofdate().
#include <unistd.h>#include <sys/time.h>int main() {
struct timeval start, end; //用來記下開始 & 結束時間的
long seconds, useconds, time_in_ms; //話說這東西可準確至奈秒!!nanoseconds
gettimeofday(&start, NULL);
gettimeofday(&end, NULL);
seconds = end.tv_sec - starrt.tv_sec;
useconds = end.tv_usec - start.tv_usec;
time_in_ms = seconds * 1000 + useconds/1000.0;
return 0;
}/*struct timeval的defination: (已定義在sys/time.h)struct timeval {time_t tv_sec;suseconds_t tv_usec;}*/










Recent Comments