Qt 性能优化:CPU占有率高的现象和解决办法

一、前言

在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡顿,因为鼠标是由 Qt 应用程序层负责绘制的,如果应用程序 CPU 占有率高了的话,也会导致鼠标绘制缓慢,导致鼠标卡顿。

所以要解决 CPU 占有率高的问题,进行性能优化,本文对项目中容易出现的问题现象与解决办法进行了记录。

二、UI 控件频繁刷新

现象

代码逻辑控制的 UI 控件(包括 QWidget)频繁刷新,或者某个动作频繁执行。UI 刷新在一定程度上会对CPU占用率有影响,若频繁刷新控件(不论是重绘还是更新数据),都会十分消耗 CPU 占用率。例如一个时间 Label,采用定时器设置时间,如果定时器的定时间隔过短,比如 10ms 甚至更短,就会比较消耗 CPU 占用率。

解决方法

所以自定义 UI 控件时就需要注意避免频繁刷新;定时器的间隔时间也要合理设置,避免过短或过长。

三、paintEvent 高频绘图

这个情况很常见,但相关内容很多不方便放在这,可以看我的下一篇博客:Qt 性能优化之二:绘制视频方案选择

四、优化界面刷新

现象
项目中有一项功能是在子线程里读数据,数据若发生变化了就发送信号,在槽里更新界面。程序

  • 14
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt应用程序全屏刷新卡顿时,可能有以下几个原因: 1. 图形资源使用过多:全屏刷新意味着每一帧的图形资源都需要被重新渲染和绘制,如果应用程序中使用的图形资源过多,会导致绘制过程变得缓慢,从而导致卡顿。可以考虑优化图形资源的使用,如合并图像、减少绘制次数等方式。 2. 事件处理时间过长:全屏刷新意味着每一帧都会触发许多事件,如鼠标、键盘等输入事件,以及定时器事件等。如果事件处理时间过长,会导致绘制过程被阻塞,从而引起卡顿。可以考虑对事件处理进行优化,如减少不必要的事件处理、将耗时操作放在后台线程中处理等方式。 3. CPU性能不足:全屏刷新需要大量的计算和绘制操作,如果CPU性能不足,会导致程序无法及时完成绘制,从而引起卡顿。可以考虑降低绘制负载,如减少绘制的复杂度、降低帧率等方式。 4. 内存管理问题:全屏刷新可能需要大量的内存来存储图像数据等信息,如果存在内存泄漏或不当的内存管理,会导致内存不足,从而引起卡顿。可以使用合理的内存分配和释放策略,避免内存泄漏和内存碎片化。 综上所述,Qt应用程序全屏刷新卡顿问题可能是由于图形资源使用过多、事件处理时间过长、CPU性能不足或内存管理问题等因素造成的。针对具体问题,需要进行详细的分析和优化,以提全屏刷新的性能和流畅度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值