【发布时间】:2013-05-17 19:32:13
【问题描述】:
我在 OSX 中使用 clock() 时遇到问题。 我只想显示自程序启动以来经过的时间。 问题是,当我将 clock_t 结构除以 CLOCKS_PER_SEC 时,我得到了奇怪的结果。
运行我的程序 10 秒将显示 1.0。 CLOCKS_PER_SEC 在我的系统上设置为 1,000,000。
这是我的代码示例:
//startTime = clock() at the start of the program
//This is called in each program loop
elapsedTime = (double)(clock() - startTime)/CLOCKS_PER_SEC
如果我正在做 elapsedTime * 10,我会以秒为单位得到准确的值。 在程序执行期间,我根本不做任何睡眠或等待。
非常感谢任何帮助了解正在发生的事情。
编辑:
好的,我更正了演员表,但这并没有改变如果我运行程序 10 秒我得到 1.0, 1 seconds is 0.1 的事实。这是我不明白的。我的 CLOCKS_PER_SEC 就像 CLOCKS_PER_TEN_SEC。
【问题讨论】:
-
在两次
clock()通话之间你在做什么? -
只是用 SFML 画一个简单的图像。 (不涉及 fps 限制)。我还在每一帧上显示 elaspedTime,我看到每一秒增加了大约 0.1 到 elapsedTime。
-
那么可能大部分处理都是由 GPU 完成的,没有被
clock()计算在内。 -
没想到。但我不知道如何验证它。我刚刚发现 SFML 有一个 Clock 类,我想我会坚持下去,但仍然不明白为什么我通过将 elapsedTime 乘以 10 得到相当准确的结果。