iOS 性能优化主题

106 阅读3分钟

性能优化

  1. 性能指标总览

关注点:考虑当前业务形态,做相应性能评测优化

粗粒度的,全性能指标,我们会大版本更新的Monkey测试/性能检测

细粒度的,因为有问题,主要关注监测平台的崩溃、页面卡顿、内存优化上

  1. 治理实践

  1. 总成果

耗时(-30%)/内存峰值(-20%)/崩溃率(0.3‰)/页面掉帧率(<3%)

  1. 卡顿/掉帧优化

指标定义:

呈现速度缓慢的帧:该指标是指超过 0.1% 的帧呈现时间超过 700 毫秒的屏幕实例所占的百分比。

冻结的帧:该指标是指超过 50% 的帧呈现时间超过 16 毫秒的屏幕实例所占的百分比。

处理方法:

API使用接口不当

线程数控制,减少CPU/GPU负载

CPU/GPU负载均衡,编辑/预览页,开启离屏渲染。

  1. 耗时/响应时间

减少图片I/O,拍摄->裁剪页的流程优化

并发处理,引入图片处理底层的线程队列

缓存,5页任务缓存

图片处理算法的切换(OpenCV->CoreImage, 1.CoreImage系统内部做了优化 2.CoreImage可以切换CPU/GPU加速)整体耗时减少45%

  1. 内存优化

循环中加入AutoReleasePool及时释放图片资源 (for循环执行结束后释放,=> 不需要对象时,自动释放)

性能优化专题总结,

完善了性能检测、监测、治理到防劣化的流程。

达到了当前团队和产品 对性能质量的要求。

不足,

不够深层次的优化 => 编写OOM内存分配日志(大内存分配scalable_zone调用的malloc_logger)、统计函数运行耗时(hook objc_msgsend)、利用RunLoop原理监听卡顿(kCFRunLoopBeforeSources和kCFRunLoopAfterWaiting,PLCrashReporter库)等等

没有完全讲防劣化自动化 => 利用Infer/Clang静态分析工具

  1. 网络优化

《Web性能权威指南》

APM(Application Performance Management)

  1. 理论知识

应用性能管理

流程:检测->监测->治理->防劣化

APM(Application Performance Management)即应用性能管理,是一种用于监控和优化软件应用性能的方法论。主要具有以下特征:

  • 全面性:APM系统可以监控应用的各个组件,如服务器、数据库、缓存等。

  • 分布式追踪:可以跨服务器跟踪单个请求,处理分布式系统的复杂性。

  • 代码级可见性:一些APM具备代码级别的监控和统计。

  • 数据库检测:可以检测数据库访问的性能。

  • 用户体验监控:监控真实用户的响应时间、失败率等。

  • 动态配置:可以动态调整数据收集策略。

  • 分析与报告:提供丰富的分析功能和报告。

  • 告警:支持设置告警规则并通知。

通过应用APM,可以:

  • 查找应用性能瓶颈

  • 优化代码性能

  • 监控服务运行状态

  • 分析业务指标

  • 提升用户满意度

常见的APM工具包括New Relic、AppDynamics、Dynatrace等。采用APM可以持续优化应用性能。

  1. 建设实践

检测,上线流程,接入Monkey测试、性能检测工具检测;

监测,追加MetricKit日志能力,收集性能堆栈信息,接入检测平台;

治理,打通性能问题追踪闭环,制定疑难和关键指标治理方案;

防劣化,开发流程接入SwiftLint、GitFlow+Review+踩坑日志(飞书收集表)

参考

字节跳动如何系统性治理 iOS 稳定性问题

《议题四 美团万分之一Crash率治理架构 - 美团谌天洲》