性能优化
-
性能指标总览
关注点:考虑当前业务形态,做相应性能评测优化
粗粒度的,全性能指标,我们会大版本更新的Monkey测试/性能检测
细粒度的,因为有问题,主要关注监测平台的崩溃、页面卡顿、内存优化上
-
治理实践
-
总成果
耗时(-30%)/内存峰值(-20%)/崩溃率(0.3‰)/页面掉帧率(<3%)
-
卡顿/掉帧优化
指标定义:
呈现速度缓慢的帧:该指标是指超过 0.1% 的帧呈现时间超过 700 毫秒的屏幕实例所占的百分比。
冻结的帧:该指标是指超过 50% 的帧呈现时间超过 16 毫秒的屏幕实例所占的百分比。
处理方法:
API使用接口不当
线程数控制,减少CPU/GPU负载
CPU/GPU负载均衡,编辑/预览页,开启离屏渲染。
-
耗时/响应时间
减少图片I/O,拍摄->裁剪页的流程优化
并发处理,引入图片处理底层的线程队列
缓存,5页任务缓存
图片处理算法的切换(OpenCV->CoreImage, 1.CoreImage系统内部做了优化 2.CoreImage可以切换CPU/GPU加速)整体耗时减少45%
-
内存优化
循环中加入AutoReleasePool及时释放图片资源 (for循环执行结束后释放,=> 不需要对象时,自动释放)
性能优化专题总结,
完善了性能检测、监测、治理到防劣化的流程。
达到了当前团队和产品 对性能质量的要求。
不足,
不够深层次的优化 => 编写OOM内存分配日志(大内存分配scalable_zone调用的malloc_logger)、统计函数运行耗时(hook objc_msgsend)、利用RunLoop原理监听卡顿(kCFRunLoopBeforeSources和kCFRunLoopAfterWaiting,PLCrashReporter库)等等
没有完全讲防劣化自动化 => 利用Infer/Clang静态分析工具
-
网络优化
APM(Application Performance Management)
-
理论知识
应用性能管理
流程:检测->监测->治理->防劣化
APM(Application Performance Management)即应用性能管理,是一种用于监控和优化软件应用性能的方法论。主要具有以下特征:
-
全面性:APM系统可以监控应用的各个组件,如服务器、数据库、缓存等。
-
分布式追踪:可以跨服务器跟踪单个请求,处理分布式系统的复杂性。
-
代码级可见性:一些APM具备代码级别的监控和统计。
-
数据库检测:可以检测数据库访问的性能。
-
用户体验监控:监控真实用户的响应时间、失败率等。
-
动态配置:可以动态调整数据收集策略。
-
分析与报告:提供丰富的分析功能和报告。
-
告警:支持设置告警规则并通知。
通过应用APM,可以:
-
查找应用性能瓶颈
-
优化代码性能
-
监控服务运行状态
-
分析业务指标
-
提升用户满意度
常见的APM工具包括New Relic、AppDynamics、Dynatrace等。采用APM可以持续优化应用性能。
-
建设实践
检测,上线流程,接入Monkey测试、性能检测工具检测;
监测,追加MetricKit日志能力,收集性能堆栈信息,接入检测平台;
治理,打通性能问题追踪闭环,制定疑难和关键指标治理方案;
防劣化,开发流程接入SwiftLint、GitFlow+Review+踩坑日志(飞书收集表)
参考
《议题四 美团万分之一Crash率治理架构 - 美团谌天洲》