我有这个简单的代码:
#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/