首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用cpulimit限制程序时,时间记录给出了异常值。

当我使用cpulimit限制程序时,时间记录给出了异常值。
EN

Stack Overflow用户
提问于 2022-02-23 11:54:04
回答 1查看 106关注 0票数 -1

我的代码是:

代码语言:javascript
复制
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%。然后我发现时间轴给出了狼人值:

代码语言:javascript
复制
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

我能感觉到程序运行的口吃,所以也许时间轴的结果是正确的。但我认为肯定还有其他地方阻碍了程序的运行。时间的主要部分不在我的节目里。

任何人都知道为什么

EN

回答 1

Stack Overflow用户

发布于 2022-02-23 12:06:21

clock()返回您的程序请看这里实际消耗的时间,而std::chrono::steady_clock则一直在计数,即使您的程序没有运行。

这解释了你的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71236466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档