Linux 上 C 语言的毫秒精确计时
最初询问为什么在 Windows 上 Clock() 以毫秒为单位返回时间,但在 Linux 上只返回秒,提问者寻求一种不依赖Boost或Qt等第三方库即可获得毫秒级时间精度的解决方案。
解决方案使用gettimeofday()
解决方案关键在于利用标准 C 库中存在的 gettimeofday() 函数。下面是如何实现它:
包含必要的标头:
#include <sys/time.h> #include <stdio.h> #include <unistd.h>
定义一个 struct timeval 来存储秒和微秒:
struct timeval start, end;
获取开始时间:
gettimeofday(&start, NULL);
使用 usleep() 指定以微秒为单位的延迟(替换为您想要的延迟):
usleep(2000);
获取结束时间:
gettimeofday(&end, NULL);
计算经过的时间:
long mtime, seconds, useconds; 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);
此代码片段利用 gettimeofday() 获取以微秒为单位的时间,保证毫秒级精度。它是在 Linux 上用 C 语言获取精确时间测量的强大且标准的解决方案。
以上是如何在没有外部库的情况下在 Linux 上用 C 语言实现毫秒级精确计时?的详细内容。更多信息请关注PHP中文网其他相关文章!