[英]inconsistent clock_gettime performance
我正在尝试计算一些C ++代码,但我得到了奇怪的结果。 我写了这个测试程序,试图找出正在发生的事情。 任何人都可以解释结果吗? 这是在Ubuntu 11.04和EC2中高CPU实例上运行的,如果相关的话
#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
您还必须考虑到当前时间可能已经延续到下一秒。 纳秒字段仅告诉您在当前秒内您已经走了多远。
elapsed = (currentTime.tv_sec - startTime.tv_sec) * 1000000000
+ currentTime.tv_nsec - startTime.tv_nsec;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.