gpt4 book ai didi

c++ - 用于捕获线程 CPU 时间的 API

转载 作者:行者123 更新时间:2023-12-03 07:02:01 25 4
gpt4 key购买 nike

我想测量 CPU 时间,而不是线程上的耗时。例如,如果一个线程正在等待或休眠,它不应该计入 CPU 时间,因为该线程不处于可运行状态。所以我得到了以下链接来获取 CPU 时间。但是,它似乎是根据我下面的测试来捕获耗时(我希望 cpu_time_used 应该接近 0,但实际上是 2)。我错过了什么?
https://www.gnu.org/software/libc/manual/html_node/CPU-Time.html

#include <time.h>

clock_t start, end;
double cpu_time_used;

start = clock();
std::this_thread::sleep_for (std::chrono::seconds(2));
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

最佳答案

请注意,clock() 以核心时间为单位进行测量,即 CLOCKS_PER_SEC clock()滴答表示在一个处理器上的一秒计算,因此它表示进程在所有线程上使用的时间量。所以,如果在 sleep 期间有另一个线程在运行,它仍然会增加时钟计数——如果总共有两个线程,时钟计数将指示 2 秒已经过去,就像你展示的那样。如果 sleep 线程是唯一的线程,您将获得少量时间,例如 @NateEldredge 报告。在 Linux 上,您可以在 CLOCK_THREAD_CPUTIME_ID 上查询或设置计时器。相反,就像@KamilCuk 说的那样。

关于c++ - 用于捕获线程 CPU 时间的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64794894/

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