我试图估计代码块的持续时间(特别是为了获得基于物理的动画的帧速率独立性的时间步长,所以分辨率应该是毫秒等级)。堆栈溢出的问题主要是推荐使用clock()方法,我已经尝试了但是它似乎没有正常工作。我已经使用gettimeoftheday()方法解决了这个问题,但我仍然很好奇为什么clock()失败了。这是我的代码块:
for (int i = 0; i < 10000; i++)
{
std::cout << "time: " << clock() << std::endl;
usleep(1000);
}
以一定的速度打印时间。当我将usleep值增加到1000000时,打印时钟值的增加率急剧下降。我认为clock()应该给出一个与绝对时间值相关的值,与我的代码无关。
提前致谢。
PS:为了提前避免误解,我并没有抱怨打印率下降了。在某个增量时间打印的VALUE在usleep(1000)和usleep(1000000)之间不一样。答案 0 :(得分:1)
你错了。从其规范(C99 7.32.2.1)我认为clock()应该给出一个与绝对时间值相关的值
clock
函数确定使用的处理器时间。
如果您想要绝对时间,请使用time
或std::chrono
库中的合适时钟,或clock_gettime
或gettimeofday
等不太便携的时钟。
答案 1 :(得分:0)
问题假设是错误的,但由于时间测量和时间API令人困惑,我不得不提出问题,因此用户提出这样的问题是正确的。
鉴于问题描述,我将使用最后一个进行计算:设置1秒间隔计时器,在完成时触发信号。然后打印您能够绘制的帧数。您可以稍后使用此数字调整帧渲染复杂度。