美文网首页
卡顿优化

卡顿优化

作者: xxttw | 来源:发表于2023-06-25 21:53 被阅读0次
image.png
CPU和GPU的工作原理

在屏幕成像的过程中,CPU和GPU起到了至关重要的作用

image.png
  • CPU
  1. 对象的创建和销毁
  2. 对象属性的调整frame,bound
  3. 布局的计算
  4. 文本的计算和排版
  5. 图片的格式转换和解码
  6. 图像的绘制(core graphics)
  • GPU
    纹理的渲染
屏幕成像的原理
image.png image.png
解决卡顿的思路 尽可能的减少CPU和GPU的资源消耗, 缩短任务的处理时间,让它们能够更快的完成任务
  • CPU
  1. 使用轻量级的对象, 比如用不到点击事件的地方使用CALayer 渠道UIView
  2. 不要频繁的调整视图的相关属性, 比如frame,bounds等尽可能的让多次相同的操作合并为一次
  3. 提前计算好需要的布局
  4. 尽可能的减少视图的层级
  5. 减少带透明度视图的数量
  6. 复杂页面使用纯代码布局, 减少autolayout的使用, 因为autolayout需要消耗更多的CPU资源
  7. 使用懒加载, 在需要用的时候时刻再去创建
  8. 耗时的操作放到子线程去处理, 比如图片的解码和绘制, 文本尺寸的计算和绘制
  • GPU
  1. 尽量减少视图的数量和层级
  2. 减少带透明度的视图, 因为带透明度的视图重叠在一起往往需要更多的计算量
  3. 避免短时间内加载大量图片,尽可能的将多张图片合并成一张
  4. 尽量不要使用超大图片, GPU处理的最大纹理是4096*4096, 一旦超过这尺寸就要占用CPU资源进行处理
  5. 尽量避免出现离屏渲染,离屏渲染会在在屏幕外会新开辟一个缓冲区进行渲染, 当屏幕内缓冲区不够用后, 需要切换上下文环境到屏幕外缓冲区, 获取完帧数据之后又要切换上下文回到屏幕内缓冲区, 会造成大量的资源开销
那些操作会处理离屏渲染

光栅化 layer.shouldRasterize = YES
遮罩 layer.mask
圆角 layer.masksToBounds = YES, layer.cornerRadius > 0 可以通过CoreGraphics绘制圆角或者切圆角图片
阴影 layer.shadowxxx
如果设置了layer.shadowPath就不会产生离屏渲染

相关文章

  • 卡顿优化

    卡顿优化 - CPU 卡顿优化 - GPU 离屏渲染 卡顿检测 耗电优化

  • 21-性能优化

    一、CPU和GPU 二、卡顿产生的原因和优化 卡顿优化-CPU 卡顿优化-GPU 卡顿监测 监控卡顿的demo:推...

  • iOS 性能优化

    iOS的性能优化主要可提现在以前的几个方面:卡顿优化、耗电优化、启动优化、安装包的瘦身。 1、卡顿优化 在了解卡顿...

  • Android开发页面帧率优化有感

    Android APP 优化工具分析Android App优化之消除卡顿Android性能优化:卡顿优化Andro...

  • 性能优化

    面试题 CPU和GPU 屏幕成像原理 卡顿产生的原因 卡顿优化 - CPU 卡顿优化 - GPU 离屏渲染 卡顿检...

  • Android-性能优化

    性能优化 卡顿 如何衡量卡顿 "卡顿" 产生的原因 Profile GPU Rendering 通用优化流程第一步...

  • 无标题文章

    APP性能优化 UI卡顿优化 View的绘制原理 UI卡顿原理分析 UI卡顿检测分析 BlockCanary原理分...

  • iOS的优化

    面试的时候,优化的问题,问的挺多的iOS的优化分为很多,卡顿优化,耗电优化,启动优化,网络优化等 卡顿优化 首先的...

  • iOS-面试题5-性能优化

    目录: 卡顿优化 耗电优化 启动优化 APP瘦身 一. 卡顿优化 CPU和GPU的作用CPU计算文字大小、位置、颜...

  • 卡顿优化

    1卡顿优化工具 CPU profiler Systrace StrictMode 2自动化卡顿方案及优化 自动化卡...

网友评论

      本文标题:卡顿优化

      本文链接:https://www.haomeiwen.com/subject/qbytcdtx.html