我试图估计代码块的持续时间(特别是为了获得基于物理的动画的时间步长,以获得帧速率不变性,因此分辨率应该是毫秒级)。堆栈溢出的问题主要是推荐clock()方法,我已经尝试过了,但是它似乎不能正常工作。我已经使用gettimeoftheday()方法解决了这个问题,但是我仍然很好奇为什么clock()会失败。这是我的代码块:
for (int i = 0; i < 10000; i++)
{
std::cout << "time: " << clock() << std::endl;
usleep(1000);
}它以一种速度打印时间。当我把睡眠值增加到,比如说1000000,打印时钟值的增长率就会急剧下降。我认为clock()应该提供一个与绝对时间值相关的值,而不依赖于我的代码。
提前谢谢。
PS:为了事先消除可能的误解,我不是在抱怨印刷比率下降了。在特定的增量时间打印的值在usleep(1,000)和usleep(1000000)之间并不相同。
发布于 2014-12-08 15:53:27
问题假设是错误的,但我不得不提出这个问题,因为时间测量和时间API是混淆的,所以用户问这样的问题是正确的。
给定问题描述,我将使用最后一个计算:设置一个1秒间隔计时器,当完成时触发一个信号。然后打印您能够绘制的帧数。稍后您可以使用这个数字调整框架呈现的复杂性。
发布于 2014-12-08 15:14:42
我认为clock()应该给出一个与绝对时间值相关的值。
你想错了。(C99 7.32.2.1)
clock函数确定使用的处理器时间()。
如果您想要绝对时间,可以使用time,或者使用std::chrono库中合适的时钟,或者不太容易移植的东西,比如clock_gettime或gettimeofday。
https://stackoverflow.com/questions/27360952
复制相似问题