首页 文章

OSX 10.7上的clock()和CLOCKS_PER_SEC

提问于
浏览
1

我在OSX中使用clock()时遇到问题 . 我只想显示自程序启动以来经过的时间 . 问题是,当我通过CLOCKS_PER_SEC划分clock_t结构时,我得到了奇怪的结果 .

运行我的程序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秒是0.1 . 这是我不明白的 . 我的CLOCKS_PER_SEC就像一个CLOCKS_PER_TEN_SEC .

2 回答

  • 2

    我认为你的演员是在错误的地方,所以你得到一个整数除法 . 试试这个:

    elapsedTime = (double)(clock() - startTime)/CLOCKS_PER_SEC;
    

    编辑:

    另请注意,在大多数系统上, clock() 测量CPU时间 . 也许你没有像你想象的那样使用尽可能多的CPU时间 .

  • 0

    将你的演员阵容移动到第一个括号内:

    elapsedTime = ((double)(clock() - startTime)/CLOCKS_PER_SEC)
    

    现在 clock() -startTime 变为double,强制CLOCKS_PER_SEC也是一个浮点值,你得到浮点结果 . 否则,它是一个整数除法,并且只得到整数结果 .

相关问题