优化QT的CPU占用率的一个思路,全网没看到这么详细的(有代码)

关于优化QT的cpu占用率

引言:在最近的项目中,发现执行QT程序时,CPU占用率奇高,最高高达98%。

1、查看CPU占用率 - 指令

Linux终端输入:top
即可查看当前CPU占用率

2、优化CPU站占用率

遂专门来找谷哥和度娘讨讨经验。

总结目前网上的各种说法,原因有如下几点:
1、在paintEvent函数和update函数使用不规范,或者相互嵌套。【=>导致了没有必要的循环刷新,甚至死循环。】
2、代码逻辑控制的UI控件频繁刷新,或者某个动作频繁执行。【=>UI刷新在一定程度上会对CPU占用率有影响,若频繁刷新控件(不论是重绘还是更新数据),都会十分消耗CPU占用率】
3、复杂的运算,如浮点运算
4、某种死循环

经过排查,以上情况均不属于。一层层剥逻辑,最终发现程序代码实现的某个类导致了CPU占用率的飙升。

细致排查后,发现该类界面有一个QLabel类定义的控件,用来显示当前时间的(且1s刷新一次)。该控件的实时时钟代码如下:

void MyWidgets::InitTime(QLabel *ClockLabel)
{
//时间设置
//设置时间显示的字体
   QPalette palette;
   palette.setColor(QPalette::WindowText,QColor(10,10,10));
   ClockLabel->setPalette(palette);

   //定时器
   QTimer *CurrentTime = new QTimer(this);
   CurrentTime->start(0);				//使用定时器信号槽,尽快更新时间的显示

   connect(CurrentTime,&QTimer::timeout,[=](){
       QDateTime current_time = QDateTime::currentDateTime();
       //显示时间,格式为:年-月-日 时:分:秒 周几
       QString StrCurrentTime = current_time.toString("yyyy-MM-dd hh:mm:ss dddd");
       ClockLabel->setText(StrCurrentTime);
   });
}

可以看出,在功能实现函数中,是通过定时器进行实时时间同步和刷新的。而定时器设定的刷新时间是:Timer->start(0); 将该值设为100后,cpu占用率一下从98%降低至10%左右,且界面无操作时,可低至0.3%。

总结:
1、优化QT的CPU占用率的一个思路是实时时钟的定时器。
2、定时器相关的知识点还是要多了解,使用时要认真对待,而不是光靠想。
3、一个简单的修改,就能够让CPU占用率大大降低。所以,性能优化不是难事,但也不是小事。
4、对待自己的代码,要抱着胆大心细的特点,多尝试,多揣摩。定时优化,定时总结。

希望我的文章能够给你带来一些启发。欢迎+个关注,便于我们实时沟通!

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐亦_Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值