我有这个简单的代码:

#include <iostream>
#include <ctime>

using namespace std;

int main(int argc, char **argv)
{
    cout << clock() << endl;

    for(int i = 0; i < 100; i++){
        int k = i * i;
    }

    cout << clock() << endl;

    return 0;
}


我的问题是,两个clock()调用都返回相同的值。如果clock()返回程序使用的处理器时间,那么执行100次乘法运算是否要花费一些处理器时间?就我而言,两个调用都返回0。

我在Ubuntu上,使用GCC进行编译。

最佳答案

未指定clock的分辨率;最早
我使用它的系统是20毫秒(1/50
第二个,对应我所居住的线路频率)。
现代Unix要求CLOCKS_PER_SECOND被定义为
1000000,但仍然没有任何要求
实际分辨率。还有一百个乘法
一台现代机器,可能不会超过几个
微秒,如果那样的话。远低于典型分辨率
clock

另外,当然,编译器可以完全优化循环,因为它对程序的可观察行为没有影响。

关于c++ - clock()-循环前后的值相同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24883709/

10-12 07:36