繁体   English   中英

clock_gettime性能不一致

[英]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, &currentTime);
        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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM