我有这个简单的代码:
#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编译。
答案 0 :(得分:2)
未指定clock
的分辨率;最早的
在我使用它的系统中,它是20毫秒(1/50
第二个,对应我居住的线路频率)。
现代Unix要求CLOCKS_PER_SECOND
被定义为
1000000
,但它仍然没有提出任何要求
实际的分辨率。和一百次乘法
一台现代化的机器,可能不会超过几台
微秒,如果那样的话。远低于典型的分辨率
clock
。
另外,当然,编译器可以完全优化循环,因为它对程序的可观察行为没有影响。