gpt4 book ai didi

c++ - 不一致的 clock_gettime 性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:55 25 4
gpt4 key购买 nike

我正在尝试对一些 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;

关于c++ - 不一致的 clock_gettime 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11354717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com