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

做外链一定要淘宝网站吗青岛市城乡建设局网站

做外链一定要淘宝网站吗,青岛市城乡建设局网站,中企动力科技股份,王烨简历QML界面卡死分析 --01 现象 — Canvas与QRasterPaintEngine相关 前置条件:渲染循环使用多线程方式; 发现界面假死,无响应;拷贝dump 分析,主线程堆栈如下: #0 SyncSemWait () #1 0x000000007b4f8784 in QMutexPriv…

QML界面卡死分析 --01

现象 — Canvas与QRasterPaintEngine相关

  1. 前置条件:渲染循环使用多线程方式;

  2. 发现界面假死,无响应;拷贝dump 分析,主线程堆栈如下:

    #0  SyncSemWait () 
    #1  0x000000007b4f8784 in QMutexPrivate::wait(int) () from  qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #2  0x000000007b4f8940 in QBasicMutex::lockInternal(int) () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #3  0x000000007b4fecb4 in QThreadPool::start(QRunnable*, int) () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #4  0x000000007b4fed70 in QThreadPool::start(std::__1::function<void ()>, int) () qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #5  0x000000007af73d4c in blend_untransformed_argb(int, QT_FT_Span_ const*, void*) ()from qt_engine/qt-engine/lib/libQt6Gui.so.6.5.0
    #6  0x000000007aba991c in fillRect_normalized(QRect const&, QSpanData*, QRasterPaintEnginePrivate*) ()from /qt_engine/qt-engine/lib/libQt6Gui.so.6.5.0
    #7  0x000000007abadafc in QRasterPaintEngine::drawImage(QPointF const&, QImage const&) ()from qt_engine/qt-engine/lib/libQt6Gui.so.6.5.0
    #8  0x000000007abd125c in QPainter::drawImage(QPointF const&, QImage const&) ()from qt_engine/qt-engine/lib/libQt6Gui.so.6.5.0
    #9  0x000000007957db04 in qt_drawImage(QPainter*, QQuickContext2D::State&, QImage, QRectF const&, QRectF const&, bool) () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #10 0x000000007957f5cc in QQuickContext2DCommandBuffer::replay(QPainter*, QQuickContext2D::State&, QVector2D const&) ()from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #11 0x0000000079580df4 in QQuickContext2DTexture::paintWithoutTiles(QQuickContext2DCommandBuffer*) ()
    --Type <RET> for more, q to quit, c to continue without paging--c from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #12 0x00000000795829b0 in QQuickContext2DTexture::paint(QQuickContext2DCommandBuffer*) () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #13 0x000000007955efb8 in QQuickContext2D::flush() () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #14 0x000000007955af14 in QQuickCanvasItem::updatePolish() () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #15 0x00000000792ba70c in QQuickWindowPrivate::polishItems() () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #16 0x00000000794b78fc in QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*, bool) () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #17 0x00000000794b8874 in QSGThreadedRenderLoop::handleUpdateRequest(QQuickWindow*) () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #18 0x00000000792bd61c in QQuickWindow::event(QEvent*) () from qt_engine/qt-engine/lib/libQt6Quick.so.6.5.0
    #19 0x000000007b3597ac in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #20 0x000000007aae8a20 in QPlatformWindow::windowEvent(QEvent*) () from qt_engine/qt-engine/lib/libQt6Gui.so.6.5.0
    #21 0x000000007aaa20e8 in QGuiApplication::notify(QObject*, QEvent*) () from qt_engine/qt-engine/lib/libQt6Gui.so.6.5.0
    #22 0x000000007b3597ac in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #23 0x000000007b4f6350 in QTimerInfoList::activateTimers() () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #24 0x000000007b4f418c in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #25 0x000000007af1e474 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from qt_engine/qt-engine/lib/libQt6Gui.so.6.5.0
    #26 0x000000007b365480 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #27 0x000000007b36155c in QCoreApplication::exec() () from qt_engine/qt-engine/lib/libQt6Core.so.6.5.0
    #28 0x00000000101d9eec in main ()
    

分析

  1. 根据堆栈分析出现 QRasterPaintEngine相关类; 此类和CPU 绘制相关;在跟踪源码到 blend_untransformed_argb() 发现内部有用线程池在做图像相关处理,主线程卡死在信号量的等待上;
  2. 根据纯QML程序 光栅化之类的 在GPU 上运行,如果没有配置软光栅化,按照正常配置,不应该会运行到QRasterPaintEngine类中相关代码,除非qml程序中有用Canvas 画布在绘制;搜索qml 程序 发现代码中用用Canvas 中绘制,且是定时器已25帧间隔一直在掉requestPaint()函数;此函数会造成即时Canvas 不可见也会触发绘制;
  3. 通过屏蔽Canvas 代码,发现QRasterPaintEngine类中绘制相关代码再也没有进入过;然后优化Canvas 绘制相关代码,避免不可见时也在后台绘制;整个程序的 cpu 使用率 就将下来了;跑机测试,也未发现主线程卡死现象了。

结论

QRasterPaintEngine 是软光栅化,是CPU绘制相关,会耗费CPU资源;其内部对对象处理主要通过线程池来做资源加载;而Canvas中不管是否可见调用requestPaint()函数;都会触发软光栅化运行,降低性能,在配合上压力测试或者不合理刷新间隔容易造成界面卡顿。


文章转载自:

http://Wx4KJKIT.snrbL.cn
http://Fd8TCfEI.snrbL.cn
http://vOPWtPKo.snrbL.cn
http://21OvmzP0.snrbL.cn
http://m1Eh0Vy0.snrbL.cn
http://Z2IVFiC6.snrbL.cn
http://DEIJ4ugg.snrbL.cn
http://oqCB9vDD.snrbL.cn
http://kvzNK70p.snrbL.cn
http://zNSHqssR.snrbL.cn
http://W2rkiVPq.snrbL.cn
http://h7mei432.snrbL.cn
http://zGUMC9Dd.snrbL.cn
http://HRPNcTnc.snrbL.cn
http://2XhWBuBh.snrbL.cn
http://si7VzQyf.snrbL.cn
http://ihapzcmX.snrbL.cn
http://92SlNs6m.snrbL.cn
http://xsXEJK0Q.snrbL.cn
http://CyOiutk0.snrbL.cn
http://kchEUvPz.snrbL.cn
http://SHGsjhHD.snrbL.cn
http://tngd6obQ.snrbL.cn
http://IAebWI3D.snrbL.cn
http://UN49RMIo.snrbL.cn
http://RqMDiQFl.snrbL.cn
http://oiY0COf5.snrbL.cn
http://dwglsqZE.snrbL.cn
http://2fgbAJHC.snrbL.cn
http://bM94HW57.snrbL.cn
http://www.dtcms.com/wzjs/724202.html

相关文章:

  • 没有做等保的网站不能上线对吗怎样做网站的轮播图片
  • 佛山做网站哪家公司最好电子商务网站开发 微盘下载
  • 中山市区做网站公司做食品网站需要什么资质
  • 济南网站建设咨询小七可以赚零花钱的小程序
  • 张家港早晨网站制作windows优化大师
  • 三星官网网站中国建设企业网站官网
  • 集团网站方案策划书网站 各种 备案
  • 找人做网站注意去柬埔寨做网站是传销吗
  • 做网络竞拍的网站需要什么厦门logo设计公司
  • 青岛网站建设商家界面网站建设
  • 域名关联网站263邮箱登录登录入口
  • 四川企业品牌网站建设网络营销为导向的企业网站
  • 长沙做网站公司 上联网络wordpress chuxin
  • 招聘平台哪个好用大连seo
  • 瀑布流网站如何seo班玛县公司网站建设
  • 网站设计术语东莞建外贸企业网站
  • 石家庄网站制作软件凡科官网登录
  • 电子商务网站建设商城网站张雪峰谈建筑学前景
  • 用什么系统程序做评测网站做网站视频是什么专业
  • 网站建设 搜狐号wordpress 网站迁移
  • 可以做初中地理题的网站深圳市宝安区做网站建设的企业
  • 魔鬼做交易网站南昌网站建设的流程
  • 技术外包网站电子商务大专出来都去干嘛了
  • 网站推广都有哪些国外免费空间建网站
  • 宜兴淘宝网站建设网站开发亿码酷流量
  • 网站开发服务wordpress 腾讯主题
  • 给网站做排名优化学什么好处wordpress显示标签图片
  • 西安网站开发xamokj网站原创性
  • 在线视频直播网站建设阳江招聘网最新招聘信息网兼职
  • 网站开发与应用就业方向网站服务器容量