gpt4 book ai didi

C : Why startingTime is larger than endingTime with gettimeofday()?

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:24 25 4
gpt4 key购买 nike

我想用 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 差异(考虑环绕)。

您当前所做的类似于仅检查持续时间为几个小时的分钟差异。结束分钟数可能大于开始分钟数,因为小时数也可能增加。

关于C : Why startingTime is larger than endingTime with gettimeofday()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36265733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com