![Clock_getres 是获取 Ubuntu 16.04 Clock_gettime() 分辨率的正确函数吗?](https://linux22.com/image/8362/Clock_getres%20%E6%98%AF%E8%8E%B7%E5%8F%96%20Ubuntu%2016.04%20Clock_gettime()%20%E5%88%86%E8%BE%A8%E7%8E%87%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%87%BD%E6%95%B0%E5%90%97%EF%BC%9F.png)
Clock_getres 是获取 Ubuntu 16.04 Clock_gettime() 分辨率的正确函数吗?
如果是,我如何使用结果进行计算?
64 位整数具有 15 位 10 位精度。对于IEEE 754-2008 标准decimal64,52 位双精度有效数提供53 位分辨率。我希望有一个公式。
@Julie Pelletier 一天前告诉我她的出色测试结果,即 Linux Clock_gettime 的最佳时间粒度是 5 毫秒
答案1
我用以下方法对clock_gettime分辨率进行了一项测量:
struct timespec now;
struct timespec resolution;
clock_gettime(CLOCK_MONOTONIC, &now);
clock_getres(CLOCK_MONOTONIC, &resolution);
printf("secs %d nanoseconds %d\n",resolution.tv_sec, resolution.tv_nsec);
结果是:
lacrosse@lacrosse-ThinkStation-S10:~/Debug$ ./a.out 秒 0 纳秒 1
这个结果与我阅读罗格斯大学计算机科学系的在线文档后的预期不同,该文档指出它会高得多(即1秒)。