4
我想花时间使用一些C++代码,但是我得到的结果很奇怪。我写了这个测试程序来试图隔离发生了什么。任何人都可以解释结果吗?这是如果这是有关在Ubuntu 11.04和EC2中高CPU实例运行clock_gettime性能不一致
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
timespec startTime, currentTime;
long elapsed;
for (int i=0; i<5; i++) {
clock_gettime(CLOCK_REALTIME, &startTime);
sleep(1);
clock_gettime(CLOCK_REALTIME, ¤tTime);
elapsed = currentTime.tv_nsec - startTime.tv_nsec;
cout << elapsed << " nanoseconds elapsed" << endl;
cout << "1000000000 expected" << endl;
}
return 0;
}
输出:
109044 nanoseconds elapsed
1000000000 expected
133713 nanoseconds elapsed
1000000000 expected
197287 nanoseconds elapsed
1000000000 expected
143396 nanoseconds elapsed
1000000000 expected
111871 nanoseconds elapsed
1000000000 expected
另一种方法是:将'1000000000 expected'行改为'0 expected'。 :) – sarnold 2012-07-06 01:41:57
@sarnold:嘿,我想它确实测量了'sleep(1)'调用的开销,并且进入了'clock_gettime()'调用的一半:-)。 – jxh 2012-07-06 01:44:53