我的代码是:
while(1)
{
std::cout << "local time " << std::chrono<<std::chrono::duration_cast<std::chrono::milliseconds>((std::chrono::steady_clock::now()).time_since_epoch()).count() << "\n";
clock_t t1, t2;
t1 = clock();
std::chrono::steady_clock::time_point t3 = std::chrono::steady_clock::now(), t4;
MyProcessFunc();
t4 = std::chrono::steady_clock::now();
t2 = clock();
std::cout << "process chrono time " << std::chrono::duration_cast<std::chrono::milliseconds>(t4 - t3).count() << "ms\n";
std::cout << "process clock time " << 1000.0*(t2 - t1)/CLOCKS_PER_SEC << "ms\n";
}当这个程序运行时,我使用“任务集”和"cpulimit“来限制它只使用CPU的一个核心和这个核心的大约10%。然后我发现时间轴给出了狼人值:
local time 352398168
process chrono time 28ms
process clock time 26.829ms
local time 352398196
process chrono time 808ms
process clock time 26.934ms
local time 352399004
process chrono time 28ms
process clock time 27.168ms
local time 352399032
process chrono time 28ms
process clock time 27ms
local time 352399061
process chrono time 27ms
process clock time 26.931ms
local time 352399089
process chrono time 809ms
process clock time 30.479ms
local time 352399898
process chrono time 33ms
process clock time 32.135ms我能感觉到程序运行的口吃,所以也许时间轴的结果是正确的。但我认为肯定还有其他地方阻碍了程序的运行。时间的主要部分不在我的节目里。
任何人都知道为什么
发布于 2022-02-23 12:06:21
clock()返回您的程序请看这里实际消耗的时间,而std::chrono::steady_clock则一直在计数,即使您的程序没有运行。
这解释了你的结果。
https://stackoverflow.com/questions/71236466
复制相似问题