当前位置: 首页 > news >正文

傻瓜式建网站安卓手机app下载软件

傻瓜式建网站,安卓手机app下载软件,网站开发的好处和弊端,网易企业邮箱怎么撤回邮件一、前言 在最近的项目中#xff0c;发现执行 Qt 程序时#xff0c;有些情况下的 CPU 占用率奇高#xff0c;最高高达 100%。项目跑在嵌入式板子上#xff0c;最开始使用 EGLFS 插件#xff0c;但是由于板子没有单独的鼠标层#xff0c;导致鼠标移动起来卡顿#xff0c…一、前言 在最近的项目中发现执行 Qt 程序时有些情况下的 CPU 占用率奇高最高高达 100%。项目跑在嵌入式板子上最开始使用 EGLFS 插件但是由于板子没有单独的鼠标层导致鼠标移动起来卡顿很不流畅所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话也会导致鼠标卡顿因为鼠标是由 Qt 应用程序层负责绘制的如果应用程序 CPU 占有率高了的话也会导致鼠标绘制缓慢导致鼠标卡顿。 所以要解决 CPU 占有率高的问题进行性能优化本文对项目中容易出现的问题现象与解决办法进行了记录。 二、UI 控件频繁刷新 现象 代码逻辑控制的 UI 控件包括 QWidget频繁刷新或者某个动作频繁执行。UI 刷新在一定程度上会对CPU占用率有影响若频繁刷新控件(不论是重绘还是更新数据)都会十分消耗 CPU 占用率。例如一个时间 Label采用定时器设置时间如果定时器的定时间隔过短比如 10ms 甚至更短就会比较消耗 CPU 占用率。 解决方法 所以自定义 UI 控件时就需要注意避免频繁刷新定时器的间隔时间也要合理设置避免过短或过长。 三、paintEvent 高频绘图 这个情况很常见但相关内容很多不方便放在这可以看我的下一篇博客Qt 性能优化之二绘制视频方案选择 四、优化界面刷新 现象 项目中有一项功能是在子线程里读数据数据若发生变化了就发送信号在槽里更新界面。程序运行的时候会出现数据变化很频繁的情况也导致更新界面的信号在短时间内被触发很多次大大损耗了程序的性能。 解决方法 因为人眼捕获的帧率有限所以界面显示不需要太快的刷新速度把信号槽更新界面改为用定时器更新界面就能避免某一时间段数据变化过频导致的卡顿问题。 五、样式表导致绘图事件频繁调用 现象 QWidget主窗口背景利用setStyleSheet设置同时重写paintEvent事件QWigdet 的 paintEvent 默认为空 void mainWidget::paintEvent(QPaintEvent *event) {QStylePainter painter(this);QStyleOption opt;opt.initFrom(this);opt.rect this-rect();painter.drawPrimitive(QStyle::PE_Widget,opt);QWidget::paintEvent(event); }主窗口上有众多不规则按键某些按键组合成按键组按下一个按键按键组的外观一起改变通过设置样式表实现每个按键都setMask设置有效区域按键在按下松开选中都会有不同的样式通过setStyleSheet设置。 结果发现按键在响应过程中非常慢top 看一下 CPU 占用率在点击按键时达到了 90%重绘事件在控件外观发生变化时会被调用。 猜测在操作按键按下松开点击时在其槽函数改变按键的样式表按键为主窗口的子控件。所以也会操作到主窗口的样式表。也即主窗口的重绘事件也被调用。也就导致了每点击一个按键最少也要调用三次主窗口的重绘事件。重复多次调用重绘事件使得在嵌入式平台中响应速度变慢。 解决方法 主窗口不使用样式表方式设置背景改用调色板方式此时主窗口样式表为空 mainWidget::mainWidget(QWidget *parent) :QWidget(parent),ui(new Ui::mainWidget) {QPixmap pixmap;QPalette palette;setWindowFlags(Qt::FramelessWindowHint);pixmap.load(:/images/res/mianbackground.png);palette.setBrush(QPalette::Window, QBrush(pixmap));setPalette(palette);ui-setupUi(this); ··· }此时操作按键CPU 占用率已经大大减小了基本不会有超过 10% 的情况。 六、短时间内创建大量控件 现象 如果短时间内创建多个控件例如一个 10x10 的控件网格测试发现也会比较消耗 CPU 资源尤其这个自定义控件本身比较消耗资源的话。 解决方法 优化自定义控件减少单个控件创建所需的资源每创建一个或者一部分控件后加点 sleep() 延时但是这样会导致创建控件比较慢视觉效果也不是很好看怎么取舍了如果是创建大量只需要显示的控件例如一些图标控件可以考虑使用 Qt 的图形视图 Graphics View 框架创建图元比创建 QWidegt 控件快多了但是需要考虑 QWidget 与 QGraphicsScene 的嵌套使用。 七、短时间内多次调用 qDebug() 打印造成卡顿 现象 如果执行了一个操作然后短时间内多次调用 qDebug() 打印测试发现也会比较消耗 CPU 资源。 解决方法 所以平时不要加太多打印正式发布后一些调试打印要即使删除。如果为了测试方便有些打印不想删除可以选择正式版本关闭打印测试时可以使用终端执行./proName d来运行应用程序以输出打印d是要输出打印的后缀。代码如下 // 默认先关闭qDebug()打印以减少短时间内输出大量qDebug()打印造成的卡顿 QLoggingCategory::defaultCategory()-setEnabled(QtDebugMsg, false); // 如果执行./proName d则开放打印 if(QString::fromUtf8(argv[1]) d) {printf(Open qDebug!!!!!\n);QLoggingCategory::defaultCategory()-setEnabled(QtDebugMsg, true); }八、设置线程优先级 现象 项目中有多线程的操作所有的线程都是用默认的QThread::InheritPriority优先级。因为设备的性能有限让所有的线程都以高优先级去运行主线程被过多地占用资源导致界面刷新卡顿的问题。 解决方法 Qt 的线程提供了以下几种优先级由低到高排列按照实际情况去设置优先级可以提高界面的流畅度。 QThread::IdlePriorityQThread::LowestPriorityQThread::LowPriorityQThread::NormalPriorityQThread::HighPriorityQThread::HighestPriorityQThread::TimeCriticalPriorityQThread::InheritPriority 九、检查子线程的延时操作 现象 项目里有一个子线程的代码结构是这样的。 void run() {while (true) {if (...) {continue;}..... //operatemsleep(20);} }线程在延时状态下是会把 CPU 交给其它线程的避免不停地抢占 CPU以上代码虽然加了延时但前面有一个判断操作如果满足了条件就直接调用continue如果这个判断条件一直都是满足的那就会不停地 continue代码也就变成了以下形式。 void run() {while (true) {continue;} }等同于一个死循环这样会大大影响程序的效率。 解决方法 在每个 continue 前添加延时。 void run() {while (true) {if (...) {msleep(20);continue;}..... //operatemsleep(20);} }或者避免使用 continue void run() {while (true) {if (...) {..... //operate}msleep(20);} }另外多线程要合理的使用 sleep。对于while(1)中有耗时处理的添加Sleep(0)就可以对于没有耗时处理的添加Sleep(0)就不行了Sleep(1)Sleep(5)都行。 十、优化数据库查询方式 如果表中数据量大或者查询频率高可以使用 map 容器来存放以空间换时间减少查询损耗。或者调整数据结构将 23 百条数据的数组改成 map 结构储存等等。 十一、通信协议的优化 可以通过优化通信协议来减少客户端和服务端的计算量。 十二、减少不必要的IO操作 IO 操作是比较耗时的常见的 IO 有通信 IO 和文件 IO可以检查相关代码进行优化。
http://www.w-s-a.com/news/933261/

相关文章:

  • windows2008做网站网站首页打开速度
  • 做外贸要做什么网站服装设计图
  • 中山市路桥建设有限公司网站网站开发角色分配权限
  • 加强档案网站建设网站搭建好了不用会不会被攻击
  • 维护网站信息网络建设服务
  • 网站建设策划书模板下载用自己电脑配置服务器做网站
  • 360免费建站空间淘宝数据网站开发
  • 做分销的网站本地dede网站怎么上线
  • 中学网站模板北京管理咨询公司
  • 网站开发用哪个软件方便二级网站建设 管理思路
  • 个人怎么创建网站中国建设银行网站口
  • 跟知乎一样的网站做展示网站步骤
  • 邯郸网站建设效果好wordpress app 加载慢
  • 做app的网站有哪些功能广州自适应网站建设
  • 兰州建设网站的网站开源网站建设
  • 深圳网站建设南山指数基金是什么意思
  • 备案中又需要建设网站网站信息组织优化
  • 做网站推广需要什么asp响应式h5网站源码下载
  • 柳州建设网官方网站免费自助建站哪个平台好
  • 论坛网站模板源码下载网站建设与网页设计是什么
  • 跑流量的网站淘宝网站的建设目标是
  • 网站计费系统怎么做九一制作网站
  • 网红营销推广温州seo博客
  • 临沂网站制作定制现在比较流行的软件开发模型
  • 南宁企业建站系统做问卷调查哪个网站好
  • 能打开各种网站的浏览器推荐建设部的网站首页
  • 苏州高端网站建设开发wordpress 删除图片
  • saas网站开发外贸网站设计风格
  • c 手机网站开发湘阴网页定制
  • 阿里云虚拟主机搭建wordpressWordPress优化手机端