美文网首页
iOS性能优化思路

iOS性能优化思路

作者: 希尔罗斯沃德_董 | 来源:发表于2022-01-04 01:07 被阅读0次

    运行速度(静态检测-Analyze、运行时检测-Profile)

    表现形式页面流畅度。本质上是降低CPU、GPU的消耗。CPU复杂逻辑运算,包括对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制;GPU是由多个小单元运算器组成的高并发运算器,负责纹理的渲染。

    CPU相关优化
    • 轻量级对象代替复杂对象(如CALayer替代UIView);
    • 缓存,空间换时间(缓存布局、缓存图片、缓存重复使用的对象、字体和时间格式)imageWithName和imageWithContentOfFile;
    • 选择合适的数据结构和算法(包括本地数据结构和服务端数据结构统一,减少多余的转换);
    • 提前计算好布局,在需要时一次修改,不要多次修改
    • 图片的size最好刚好跟UIimageView的size保持一致
    • 控制线程的最大并发数量
    • 减少IO操作,子线程进行;
    • 延时加载,需要用到的时候再创建;
    • 启动速度优化(启动时间-Time Profile );
    • 减轻主线程压力(文本尺寸计算和绘制,图片解码和绘制)
    GPU相关优化
    • 减少视图数量和层次(合成视图或者异步绘制成一张图片);
    • CPU能处理的最大纹理尺寸是4096x4096,一旦超过这个尺寸,就会占用CPU资源进行处理,所以纹理尽量不要超过这个尺寸
      尽量减少短时间内显示大量的图片,可合成一张图片
    • 减少透明视图
    • 离屏渲染 圆角、光栅化;
    • 使用了 mask 的 layer (layer.mask)
    • 需要进行裁剪的 layer (layer.masksToBounds / view.clipsToBounds)(贝塞尔曲线UIBezierPath、直接切一个带有圆角的图片等)
    • 设置了组透明度为 YES,并且透明度不为 1 的 layer (layer.allowsGroupOpacity/ layer.opacity)
    • 添加了投影的 layer (layer.shadow*)
    • 采用了光栅化的 layer (layer.shouldRasterize)
    • 绘制了文字的 layer (UILabel, CATextLayer, Core Text 等)

    消耗内存

    • 图片压缩(本地图片压缩、网络图片压缩,根据展示大小压缩、缩略图)
    • 减少不比较的缓存,缓存模块要有清理机制
    • 适当地使用AutoreleasePool
    • 防止内存泄露(NSTimer、Block)

    Memory Leaks
    Allocations
    Analyse
    MLeaksFinder

    消耗电量

    • CPU和GPU(尽可能降低功耗)
    • 定位(快速确定位置用requestLocation,完成后定位器自动断点、适当关闭、降低精度)
    • 定时器(适时关闭)
    • 网络请求(无网时不请求)
    • Io操作(避免频繁操作,累计一次进行操作)
    • 硬件检测优化

    网络请求

    • 减少网络数据(压缩 XML>JSON>ProtoBuf)
    • 合并请求
    • 合理利用缓存
    • 增量更新(时间戳etag、lastUpdate)
    • 断线续传
    • 检测网络状态,网络不可用时不尝试进行请求
    • 提供取消网络请求的操作,避免长时间的网络请求
    • 提供批量传输。下载资源时尽量一次下载尽可能多的资源

    运行稳定性

    • 野指针,僵尸对象检查(对象被释放、指针未置空则为野指针,指针指向为僵尸对象)
    • 线程安全(线程安全接口、可编辑类、同步、锁)
    • 通知、KVC&KVO
    • NSTimer target被release了
    • 内存监测
    • 主线程卡顿检测

    包大小优化

    • 编译器优化(多余符号、C++异常等)
    • AppCode检测未使用代码,去除
    • 编写LLVM插件检测出重复代码、未被调用的代码
    • 图片、音频、视频压缩
    • 去除没有用到的资源

    相关文章

      网友评论

          本文标题:iOS性能优化思路

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