一.性能优化有哪些难题?
1.性能表现差:
1).App启动慢,卡顿,丢帧;
2).内存占用高,抖动频繁;
3).耗电,网络请求慢;
3).崩溃率,异常率高等;
2.线上问题无从追查
1).如何保证异常感知灵敏度(无反馈,出异常不知道);
2).如何复原案发现场(用户反馈,异常场景不复现);
3).如何快速修复问题(修复Bug(小范围测试),多次验证才成功)
3.性能优化的长期开销大
1).如何扼杀问题于萌芽(以更高的视角知道自己的工作)
2).优化效果如何长期保持
性能优化目标:
1.性能表现好
2.线上问题易追查
3.长期投入小
二.App性能优化解决方案演进
1.项目初期
1).只关心崩溃率,不采集性能数据
2).没有性能检测,优化方案
3).没有排查问题手段
2.项目壮大期
1).指标采集,但不够全面及深入
2).接入成熟APM,排查手段单一
3).线下检测,优化,方案不成型
3.项目成熟期
1).重点关注性能问题,数据采集,手段多样化
2).线上,线下一整套完善解决方案(重点)
3).自建APM,新产品可快速接入
线上线下:
1.误区:对线上不重视
2.侧重点:线下预防,线上监控
3.方案不同:线下可用黑科技(AOP,HOOK等技术手段)
为什么要自建APM?
1.成熟APM通用,但不满足个性化需求
2.外部APM与内部系统难打通,带来的时间成本
3.数据必须掌握在自己手中
三.业界优秀的平台化实践初步认识
1.Crash收集平台:Bugly
1).数据采集,上报成功率高
2).包含Java,Native崩溃
3).建议项目初期接入
2.APM平台:听云
1).通用的性能解决方案,数据采集完善
2).方便接入,但不满足个性化需求,数据隐患
3).建议性能方案不完善的阶段接入
3.自建解决方案:美团,携程,360等
1).贴合自身业务特点,满足定制化需求
2).数据安全
为何要自建APM?
1.需求层面
2.效率层面
3.数据安全