gpt4 book ai didi

c - 为什么clock()在sleep()之间产生不一致的间隔?

转载 作者:行者123 更新时间:2023-11-30 18:27:18 25 4
gpt4 key购买 nike

我认为以下代码的输出应该完全或接近宏 CLOCKS_PER_SEC,但是,输出不是很一致。

int main(int argc, char const *argv[])
{
clock_t before = clock();

while (1) {
sleep(1);
printf("Res: %ld\n", clock() - before);
fflush(stdout);
before = clock();
}
}

示例输出:

Res: 0
Res: 1301
Res: 1540
Res: 1597
Res: 1631
Res: 1689
Res: 1740
Res: 1783
Res: 1835
Res: 1902
Res: 1956
Res: 1981
Res: 2045
Res: 2098
Res: 2147
Res: 2207
Res: 2265
Res: 2323

我假设clock()函数仅返回代码的执行时间。

那么,如何用 c 测量真实世界时间?

最佳答案

来自文档:

The value returned is the CPU time used so far as a clock_t; to get the number of seconds used, divide by CLOCKS_PER_SEC. If the processor time used is not available or its value cannot be represented, the function returns the value (clock_t) -1.

因此输出显示了处理器的使用时间。由于 sleep 不会进行繁忙等待,因此处理器上使用的时间远少于一秒。

要获取实际耗时,请参阅例如 How do I measure a time interval in C?

关于c - 为什么clock()在sleep()之间产生不一致的间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941273/

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