gpt4 book ai didi

c - 时间测量中的负值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:51 24 4
gpt4 key购买 nike

我正在尝试以毫秒为单位测量时间:

#include <stdio.h>
#include <time.h>

int main(void)
{
int i;
struct timespec start, end;

for (i = 0; i < 10; i++) {
clock_gettime(CLOCK_MONOTONIC, &start);
usleep(500000); // Sleep 500 milliseconds
clock_gettime(CLOCK_MONOTONIC, &end);

printf("Elapsed time: %lf \n", (((end.tv_sec - start.tv_sec) / 1.0e3) + ((end.tv_nsec - start.tv_nsec) / 1.0e6)));
}

return 0;
}

printf 函数中,我减去秒并除以 1000 以将结果转换为毫秒,然后我减去纳秒并除以 1000000 以将结果转换为毫秒,最后这两个结果被添加。

我认为这是正确的方法,但由于某种原因输出包含负值:

Elapsed time: 500.117421 
Elapsed time: -499.882167
Elapsed time: 500.193631
Elapsed time: -499.884990
Elapsed time: 500.115007
Elapsed time: -499.877328
Elapsed time: 500.127219
Elapsed time: -499.875301
Elapsed time: 500.124021
Elapsed time: -499.865300

我做错了什么?

最佳答案

要将秒转换为毫秒,您需要将秒乘以 1000。

所以这个

printf("Elapsed time: %lf \n",
(((end.tv_sec - start.tv_sec) / 1.0e3) + ((end.tv_nsec - start.tv_nsec) / 1.0e6)));

应该是

printf("Elapsed time: %lf \n", 
(((end.tv_sec - start.tv_sec) * 1.0e3) + ((end.tv_nsec - start.tv_nsec) / 1.0e6)));

关于c - 时间测量中的负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015815/

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