我有这个简单的代码:
#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 编译。
最佳答案
未指定时钟
的分辨率;最早
在我使用它的系统中,它是 20 毫秒(1/50
一秒钟,对应于我居住的线路频率)。
现代 Unix 要求将 CLOCKS_PER_SECOND
定义为
1000000
,但是还是没有对相关的要求
实际分辨率。一百次乘法,
一台现代机器,可能不会超过几个
微秒,如果那样的话。远低于典型分辨率
时钟
。
此外,当然,编译器可以完全优化循环,因为它对程序的可观察行为没有影响。
关于c++ - clock() - 循环前后相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24883709/