首页  >  文章  >  后端开发  >  如何在Linux上用C实现毫秒级精度计时而不依赖clock()?

如何在Linux上用C实现毫秒级精度计时而不依赖clock()?

Barbara Streisand
Barbara Streisand原创
2024-11-13 12:15:02307浏览

 How to Achieve Millisecond Precision Timing in C   on Linux Without Relying on clock()?

C :如何在没有 Clock() 限制的情况下在 Linux 上获取毫秒

与 Windows 中 Clock() 返回毫秒不同,Linux 的实现四舍五入结果精确到 1000,仅产生秒级精度。对毫秒级计时的需求引发了一个问题:有没有不使用第三方库的标准 C 解决方案?

答案:gettimeofday()

答案位于标准 POSIX 函数 gettimeofday() 中。该函数通过用当前时间填充 timeval 结构来提供高精度的计时信息。下面是一个使用 gettimeofday() 的 C 示例:

#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>

int main()
{
    struct timeval start, end;

    long mtime, seconds, useconds;    

    gettimeofday(&start, NULL);
    usleep(2000);
    gettimeofday(&end, NULL);

    seconds  = end.tv_sec  - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;

    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;

    printf("Elapsed time: %ld milliseconds\n", mtime);

    return 0;
}

此代码演示了如何通过组合从 gettimeofday() 获得的秒和微秒分量来计算经过的时间(以毫秒为单位)。请注意,应用 0.5 加法将结果四舍五入为最接近的整数。

以上是如何在Linux上用C实现毫秒级精度计时而不依赖clock()?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn