我想用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);
然后结果如下:
计算时间:-76716
结尾:334481,从411197开始
如你所见,开始比结束更重要......
我无法完全理解我所缺少的东西......
有谁知道这种情况?
答案 0 :(得分:4)
struct timeval
实际上有两个成员,tv_sec
成员和tv_usec
成员。 tv_usec
是tv_sec
值的usec传递次数,以秒为单位(顾名思义)。
因此,您必须首先检查tv_sec
差异,然后计算tv_usec
差异(考虑环绕)。
您目前正在做的事情类似于只检查持续时间为几小时的分钟差异。结束时间可能比开始分钟更长,因为小时也可以增加。