App性能优化概览与平台化实践

314 阅读2分钟

一.性能优化有哪些难题?

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.数据安全;