iOS 卡顿原因及优化思路

2023-05-16

很多iOS 开发,都会面临到解决开发过程中的卡顿问题。卡顿就是在应用使用过程中出现界面不响应或者界面渲染粘滞的情况,用户在操作App时,会出现的页面掉帧现象,给用户直接观感受就是页面卡卡的,严重影响用户体验。这种情况下可以使用友盟+U-APM应用监控平台,对应用进行分析,找到卡顿原因,进行优化。

卡顿原因

卡顿产生的原因就是CPU和GPU没有及时处理好数据,针对卡顿的优化就有思路了:尽可能减少 CPU 和 GPU 资源的消耗。

卡顿优化 — CPU

1、尽量用轻量级的对象,比如用不到事件处理的地方使用CALayer取代UIView、能用 int 就不要去使用 NSNumber。

2、不要频繁地调用和调整UIView的相关属性,比如frame、bounds、transform等属性,尽量提前计算好布局,需要时一次性修改属性,减少不必要的调用和修改(UIView的显示属性实际都是CALayer的映射,而CALayer本身是没有这些属性的,都是初次调用属性时通过resolveInstanceMethod添加并创建Dictionry保存的,耗费资源)。

3、如果对象不涉及 UI 操作,尽量放到后台子线程去处理。

4、Autolayout 会比直接设置 frame 消耗更多的 CPU 资源,相对布局最终到CPU那里也是计算出视图的绝对大小和位置的,如果不是特备复杂的位置关系,尽量用绝对布局,减少CPU的计算。

5、图片的 size 和 UIImageView 的 size 保持一致。大小一致,CPU不需要做拉伸压缩操作。

6、控制线程的最大并发数量,线程过多CPU会很忙,而且CPU调度也需要时间。

7、针对不规则列表,缓存cell的高度、通过设置view的显示和隐藏替代动态创建。

8、xib和storyboard创建视图比纯代码更加消耗资源,不推荐使用。

9、耗时的操作放到子线程,如文本处理(尺寸计算、绘制)、图片在子线程强制解码。

卡顿优化 — GPU

1、尽量避免短时间内大量图片的显示,尽可能将多张图片合成一张进行显示。

2、尽量减少透视图的数量和层次。

3、减少透明的视图(alpha < 1),不透明的就设置 opaque 为 YES,透明度涉及到混合颜色的计算。

4、GPU 能处理的最大纹理尺寸是 4096 * 4096,超过这个尺寸就会占用 CPU 资源,所以纹理不能超过这个尺寸。

5、尽量避免出现离屏渲染。

ios卡顿优化工作是一个复杂而艰巨的过程,尤其到后期更是如此,越是庞大的项目越需要对流畅度做优化,它涉及到代码的重构、逻辑的重写,甚至是底层架构,牵一发而动全身,所以开发人员必须在熟悉现有业务逻辑的前提下做优化,在不发生crash的情况下尽可能保持App的流畅性如行云流水一般。这就显出友盟+U-APM的重要性了,它能精准检测到APP的卡顿原因,让你根据问题根源进行优化。

U-APM应用性能监控平台,通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力, 及卡顿、启动分析、内存分析、网络分析等性能监测能力,支持多场景、多通道智能告警监测,帮助 开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。提供云真机测试能力,助力开发者从研发测试质量验收到线上问题复现排查,保障应用品质,提升测试效率。在云真机测试 期间自动采集崩溃信息,提供详尽的崩溃报告协助筛查,真正实现监控测试全流程深度打通。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 卡顿原因及优化思路 的相关文章

  • Swift-UIView的创建和使用

    创建 View let view1 61 UIView let view2 61 UIView frame CGRectMake 20 120 100 100 let view3 61 UIView frame CGRectMake 40
  • kali 运行apktool 报错解决方法

    问题描述 xff1a 系统 xff1a kali 1 9 apktool d 123 apk test Input file 123 apk was not found or was not readable 问题解决方法 xff1a 方法
  • pip安装换清华源

    用python的pip安装时有些包安装的太慢了 解决的方法是 xff1a 换成清华源 pip install 要安装的包 i https pypi tuna tsinghua edu cn simple 或者直接替换下载源设置清华源 pip
  • 操作无法完成,因为该文件已在system中打开

    根据提示 xff0c 我们主要的任务是在system xff08 系统 xff09 中将这个文件关闭 1 打开 任务管理器 方法一 xff1a 快捷键 xff1a ctrl 43 shift 43 esc 方法二 xff1a 右击任务栏底部
  • 在CentOS7上安装和配置Node.js

    本文介绍如何在CSDN云主机实例上搭建Node js环境 Node js 是一个基于 Chrome 的 JavaScript 运行时环境构建的开源平台 xff0c 可帮助开发人员构建快速且可扩展的网络应用程序 它在 V8 引擎上运行 xff
  • C++ 输出cout

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • k8s集群部署单节点gitlab

    k8s集群部署单节点gitlab k8s集群部署单节点gitlab前言gitlab redis yamlgitlab postgresql yamlgitlab server yaml安装结果 k8s集群部署单节点gitlab 前言 前提准
  • win10下Anaconda的安装和配置

    第一步 xff0c 下载anaconda 这是anaconda官网地址 xff0c 点击下载即可 xff1a anaconda官网 第二步 xff1a 安装anaconda 点击下载好的 exe安装包 xff0c 双击安装即可 xff1a
  • pip指定包安装目录

    文章目录 pip install t target dir pandas 设置 pip 默认安装路径 找到 Anaconda home envs py36 Lib site py USER SITE span class token ope
  • 利用VS Code docker 搭建容器开发环境(含WSL2)

    目录 基本软件安装VScode 插件安装连接WSL2及容器linux代码编译查看源码 xff0c 调试linux kernel总结补充学习busyboxvmware真香 这篇文章的灵感来源 感谢UP xff0c 我才有了WSL2 vscod
  • Linux用户和用户组管理

    此博客仅当学习笔记 xff0c 所有内容均参考C语言中文网 xff0c 望支持正版 xff0c 至C语言中文网查看详细内容 用户和用户组管理 xff0c 顾名思义就是添加用户和用户组 更改密码和设定权限等操作 可能有很多人觉得用户管理没有意
  • CCF-炉石传说

    这题原本想的比较复杂 xff0c 因为每次召唤随从或随从死亡时都要对右边的随从编号进行变动 xff0c 然后构建了链表的数据结构 xff0c 但是越写越复杂 xff0c 所以马上放弃这个思路 其实只要构建一个结构体 xff0c 结构体保存随
  • 宝塔面板开启数据库远程登陆权限

    宝塔面板开启数据库远程登陆权限 默认情况下宝塔面板创建的mysql数据库是本地登陆权限 xff0c 如果要远程管理操作需要单独开启权限 xff0c 具体操作如下 xff1a 1 登陆宝塔面板 xff0c 点击 安全 xff0c 在防火墙里面
  • 重参数化技巧:高斯分布采样

    1 高斯分布采样 我们现在得到了有样本X得到的分布X N mu sigma 2 xff0c 通过采样我们得到确定的隐变量向量 xff0c 从而作为解码器
  • 微擎系统安装流程

    虚拟主机安装微擎系统流程 推荐环境 linux 43 php5 6及以上 43 mysql5 6及以上 如果您购买的主机开通的是windows系统 请先更换成linux系统 如果是虚拟主机 在主机面板 php版本页面选择php7 0 从官网
  • 部署https后浏览器提示不安全,不出现绿色小锁?

    网站部署https后 浏览器提示不安全 不出现绿色小锁图标 访问网站后 按f12 浏览器提示 Mixed Content The page at 39 https www xxx com 39 39 was loaded over HTTP
  • linux系统变为只读出现提示Read-only file system的解决办法

    问题描述 linux系统变为只读 出现提示Read only file system 如图所示 问题原因 系统没有正常关机 导致虚拟磁盘出现文件系统错误 说明 此修复可能会导致个别文件及数据丢失 修复之前建议做好文件备份工作 解决方法 使用
  • 小程序接入微信视频号配置指南

    一 填写视频号品牌信息和视频号类目资质 xff08 需要在平台发布模式后再进行填写 xff09 如图 xff1a 二 如之前已是平台发布模式的 xff0c 还需要操作 更新授权 xff1b 如之前是自主发布的 xff0c 切换到平台发布模式
  • 微信小程序如何使用视频组件

    小程序中可以使用视频组件来播放自己想要展示的视频 xff0c 具体步骤如下 一 添加视频组件 1 点击 店铺 装修店铺 编辑 xff0c 进入小程序页面编辑 2 点击 组件库 视频 xff0c 页面会添加视频组件 xff0c 点击视频组件的
  • 小程序地理位置接口申请

    申请接口理由 xff1a wx chooseAddress 获取用户收货地址提交理由 xff1a 快速定位用户当前位置 xff0c 获取省市区等地址信息 xff0c 方便用户提交地址等信息 wx chooseLocation打开地图选择位置

随机推荐