gpt4 book ai didi

c - 如何在 Linux 中从 C 打印毫秒和纳秒精度的时间差?

转载 作者:IT王子 更新时间:2023-10-29 00:15:05 25 4
gpt4 key购买 nike

我有这个程序可以打印 2 个不同实例之间的时差,但它的打印精度为秒。我想以毫秒为单位打印它,另一个以纳秒为单位打印。

//Prints in accuracy of seconds

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

int main(void)
{
time_t now, later;
double seconds;

time(&now);
sleep(2);

time(&later);
seconds = difftime(later, now);

printf("%.f seconds difference", seconds);
}

我怎样才能做到这一点?

最佳答案

先阅读time(7)手册页。

然后,您可以使用 clock_gettime(2)系统调用(您可能需要链接 -lrt 才能获取它)。

所以你可以试试

    struct timespec tstart={0,0}, tend={0,0};
clock_gettime(CLOCK_MONOTONIC, &tstart);
some_long_computation();
clock_gettime(CLOCK_MONOTONIC, &tend);
printf("some_long_computation took about %.5f seconds\n",
((double)tend.tv_sec + 1.0e-9*tend.tv_nsec) -
((double)tstart.tv_sec + 1.0e-9*tstart.tv_nsec));

不要指望硬件计时器具有纳秒精度,即使它们提供纳秒分辨率。并且不要尝试测量小于几毫秒的持续时间:硬件不够可靠。您可能还想使用 clock_getres 查询某个时钟的分辨率。

关于c - 如何在 Linux 中从 C 打印毫秒和纳秒精度的时间差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16275444/

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