gpt4 book ai didi

c++11 - 由时钟和稳定时钟测量的时间差异

转载 作者:行者123 更新时间:2023-12-03 21:24:33 25 4
gpt4 key购买 nike

我试图测量在我的代码中执行特定函数所花费的时间。最初我使用了 clock()功能如下

clock_t start = clock();
do_something();
clock_t end = clock();

printf("Time taken: %f ms\n", ((double) end - start)*1000/CLOCKS_PER_SEC);

后来我读到了 chrono图书馆在 C++11并试图用 std::chrono::steady_clock 测量相同的值如下
using namespace std::chrono;

auto start = steady_clock::now();
do_something();
auto end = steady_clock::now();
printf("Time taken: %lld ms\n", duration_cast<milliseconds>(end - start).count());

第一个代码片段(使用 clock )测量的时间是 89.53 ms并且由 steady_clock 测量是 1140 ms .

为什么两个时钟测量的时间差异这么大?

最佳答案

clock测量处理器时间,而 steady_clock测量物理时间。所以如果do_something(),你可以得到这样的差异被其他进程抢占(例如检查邮件或其他进程)。

Daniel H在下面的评论中提出了一个很好的观点,如果 do_something() 也可能发生这种情况。不受 CPU 限制。例如,如果它休眠、锁定互斥锁、等待条件变量等。

关于c++11 - 由时钟和稳定时钟测量的时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44505683/

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