阅读 96

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

本文首发于公众号「Android开发之旅」, 欢迎关注

Jetpack版Wan-Android项目地址:Android Jetpack架构开发组件化应用实战 欢迎star

Flutter版Wan-Android项目地址:Flutter版Wan-Android 欢迎star

现在大家都在谈性能优化或者在面试的时候被问到性能优化相关问题,那么我们为什么要做性能优化呢?以及性能优化的难点是什么?在整个项目周期中不同的阶段该做什么?优化效果如何长期保持?带着这些问题我们来一起看看如何做性能优化。

当一款App在被用户使用的时候,如果出现各种异常、奔溃、卡顿等问题,那么在有耐心的用户也会毫不犹豫的卸载App的(内心OS:什么S13玩意),那么这对公司、对运营同事来说都是莫大的打击,大家花钱辛辛苦苦拉来的用户最后却因为App的各种不稳定而流失,脑补一下运营同事看你的表情(技(yi)术(lian)真(xian)棒(qi))。作为程序员的我们只能说:这个锅我们不背,因为我们有解决问题的利器:性能优化。

既然要做性能优化,那么就要综合考虑性能在哪些方面表现差?以及我们如何排查线上问题?还有就是做了性能优化后作为开发的我们如何长期保持?

性能表现差的因素有很多,比如用户直观感受的App启动慢,用户点击App图标到完全能操作使用等了太久时间,那么这种就要我们做启动优化,等了太久后终于能使用了可又出现各种卡顿、丢帧现象,如果你是用户,你会咋想。所以这种我们要做卡顿等优化。还有一些用户感受不那么直观的就是内存占用高、抖动频繁,这些用户无感知但是积累到一定程度也会引起奔溃的,影响用户使用。其他方面还有耗电、网络请求慢,奔溃率异常率高等等,这些都是需要我们着手进行优化的。

那么在用户使用出现问题的时候,我们如何第一时间感知到异常,如何第一时间收集到用户的使用日志和使用路径,快速复原“案发”现场,快速的止血呢,这就要接入APM平台了或者我们自建的APM平台。

如何避免性能优化打来的长期开销大的问题呢? 这就要将问题在上线之前解决掉,将问题扼杀在萌芽阶段,还有就是制定一些开发规范,互相review,避免将有问题的代码发上线。

所以对整个性能优化的要求就是:性能表现好,线上问题易排查,长期投入较小。

App性能优化解决方案演进分为不同的阶段,如项目初期、项目壮大期、项目成熟期,在每个阶段我们所做的事情是不尽相同的。

项目初期: 在项目初期我们需要快速的占领市场,应用在不断的做加法,我们可能只关心奔溃率,没有太多的时间去采集其他各个方面的性能数据,也没有性能检测优化的方案,在早期我们可能只接入了腾讯的bugly平台,它可以很好的帮助我们上报异常并且对java和native层的奔溃采集较准确且全面。

项目壮大期 : 项目发展到这个阶段,性能优化得到一定程度重视,开始逐步完善性能优化解决方案。开始采集各类指标,但可能还不够全面和深入,接入成熟的APM平台比如听云,但是排查手段还是比较单一的,现在检测、优化方案还不成型,还没有形成一套完整的系统。

项目成熟期 项目到这个阶段,App的各种功能已经比较稳定了,文员也比较充足,那么就该考虑精细化运营和重点关注性能相关的问题了。在这个阶段我们采集的数据比较丰富,手段也多样化,同时也具备了线上线下一整套的性能检测完善的解决方案。甚至会自建APM平台,为什么要自建呢?主要是因为第三方APM平台成熟通用,不满足个性化需求,且和内部系统难打通,带来时间成本。App的日活、人均使用时长、运营数据容易留存在三方平台也是很不安全,我们要数据必须掌握在自己手上。这样能保证APM贴合自身业务特点,满足定制化要求同时也保证了数据的安全。

以上就是对性能优化的各个难点以及不同阶段所做的事项的一些阐述,主要是一些理论相关的东西,俗话说:“ 磨刀不误砍柴工”,只有理论基础扎实了,才能更好的应用到项目中。后面会继续给大家带来启动优化,内存优化、布局优化、卡顿检测优化、线程网络等各个方面的性能优化系列文章。

扫描下方二维码关注公众号,及时获取文章推送。

推荐阅读:

Android性能优化之启动优化实战

Android性能优化之布局优化实战

如何监测Android应用卡顿?这篇就够了