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

企业网站建设一条群晖 删除 wordpress

企业网站建设一条,群晖 删除 wordpress,厦门广告公司有哪些,如何做一个微笑公众号推文一、前言 在最近的项目中#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.dnsts.com.cn/news/29895.html

相关文章:

  • 百度网站优化软件the 了wordpress
  • 做网站知名公司智能建设网站
  • 中国建设银行网站首页e路护航wordpress 布局推荐
  • 通辽网站制作解决网站提示有风险
  • 网络公司除了做网站做视频用的网站有哪些
  • 能不能用自己的主机做网站法律网站开发
  • 中山市建设局网站wordpress模板修改图片
  • 盘锦微信网站建设wordpress企业主体
  • 网站建设工作稳定吗吉林省建筑工程网
  • 网站仿制 个人天津葛沽 网站建设公司
  • 家政 东莞网站建设wordpress头像存储
  • 手机网站什么技术开发wordpress客户管理系统
  • 服务号微网站怎么做phpnow wordpress
  • 泰州公司网站建设樟树网站开发
  • 重庆中色十二冶金建设有限公司网站区块链网站开发费用
  • wordpress评论表情插件网站关键词搜索优化怎么做
  • 品牌网站建设小蝌蚪2a网站建设网站制作提供服务
  • 有没有做网站的多少钱西数 网站建设
  • 门户网站广告的类型做网站包括哪些
  • 网站备案经验公司网站一年费用
  • 手机网站推广法可以做免费广告的网站有哪些
  • 外贸网站外贸网站建设行吗百度竞价排名展示方式
  • 宣传 网站建设方案模板安装wordpress 建立数据库连接时出错
  • 网店的网站设计方案上海网络营销网站建设
  • 临沂网络网站建设aspcms开源企业网站建设系统
  • 企业网站建设公司选择分析网页制作一年价格
  • 网站开发三剑客建站平台代理
  • 做网站优化有什么途径程序员培训机构排名前十
  • 平安建设 十户长网站地址网站建设合同附件
  • 帮别人做网站规划网站建设 应该付多少维护费呢