我想用 while 循环测量计算时间。
我正在使用 C99 版本进行编程。
我的代码如下:
struct timeval startingTime,endingTime;
gettimeofday(&startingTime, NULL);
while(read(fd,&student,206) != 0){
printf("%s\n",student);
}
gettimeofday(&endingTime, NULL);
long elapsed = endingTime.tv_usec-startingTime.tv_usec;
printf("Computing Time : %ld\n",elapsed);
printf("ending : %d , starting %d",endingTime.tv_usec,startingTime.tv_usec);
然后结果如下:
Computing Time : -76716
ending : 334481 , starting 411197
如你所见,开始比结束更重要......
我不能完全理解我错过了什么......
有没有人知道这种情况?
struct timeval
实际上有两个成员,一个是tv_sec
成员,一个是tv_usec
成员。 tv_usec
是 usec 通过 tv_sec
值的次数,以秒为单位(顾名思义)。
因此您必须首先检查 tv_sec
差异,然后计算 tv_usec
差异(考虑环绕)。
您当前所做的类似于仅检查持续时间为几个小时的分钟差异。结束分钟数可能大于开始分钟数,因为小时数也可能增加。
我是一名优秀的程序员,十分优秀!