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中文网其他相关文章!