启动性能是 App 使用体验的门面,启动过程耗时较长很可能导致用户使用 APP 的兴趣骤减,抖音通过对启动性能做劣化的 AB 实验也验证了其对于业务指标有影响显著 。抖音拥有数亿的用户,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向上的重中之重 。带着问题出发
本文基于过往对抖音 Android 客户端做启动性能优化的实战经验总结提炼出普适性的方法论,并将该过程中沉淀的工具加以分享,希望能给大家带来一些新的思考 。
抖音 Android 性能优化系列往期文章回顾:抖音Android性能优化:新一代全能型性能分析工具Rhea

文章插图
假如你要负责优化抖音的启动性能,你会怎样去规划整体的优化方案?你可能会一下子想到很多方面的细节点,比如:要优化主线程耗时、要减少布局层级、要对某些启动任务做按需加载或预加载、要避免主线程 IO、要对线程使用进行优化、还要有分析工具帮助定位性能问题等……
然而,该如何系统性地把这些细碎点组织起来并按照一定的章法来落地启动优化呢?此时,需要我们在具体细节点之上有进一步的问题分解与深入思考,最终形成一套完整的方法论,不仅能覆盖所有细节点,还能切实指导在实战中达成启动优化的效果 。切实有效的方法论必然是从实战中经过千锤百炼才能形成的,而抖音庞大的用户基数又进一步保障了方法论的可行性与普适性 。那么接下来让我们带着前述问题来看抖音的启动优化方法论是怎样的又是如何应用于实战之中的 。
启动优化方法论抖音的启动性能优化方法论分为五部分,分别是:理论分析、现状分析、启动性能优化、线上验证与防劣化 。

文章插图
这五部分间存在明显的先后顺序,又能闭环达成可持续的启动性能优化,下面将对这五部分做详细阐述:
理论分析理论分析放在最先是为了从一开始就避免让视野受到限制,很多同学往往一开始接手启动优化就容易陷入对各种现状细节的分析,拘泥于片面的潜在可优化点,这样就难以做到对全局和优先级的把控,所以,我们应该首先跳出现状,从更加全局的视角来思考整体优化的目标和策略 。这里可以利用特斯拉创始人——埃隆·马斯克所推崇的“第一性原理”思考法:
“通过第一性原理,把事情升华到最根本的真理,然后从最核心处开始推理 。”基于此,我们在做启动优化的理论分析时可以从更本源的角度出发做到全局思考,比如抖音会做从进程创建到页面展示的全启动路径分阶段耗时分析、还会按照消耗的系统资源类型做耗时成因分析,通过这种极致的耗时分析可以带来极致的优化策略,此外,从全路径出发还能够发现容易忽视的问题、探索优化的极限 。
现状分析在完成理论分析后,我们基本具备了全局的视角,并且也大致清楚了整体的优化目标和策略,接下来就要基于此来做现状分析从而明晰实现目标的具体路径:
- 首先使用 profile 工具对可优化点进行摸底:其实不合理的高耗时点就是潜在的优化点,并能按照前述的理论分析归入一个或多个耗时成因中;
- 然后结合线上的指标数据确定最终优化方向:线下摸底的潜在优化点要结合其线上打点确认是否为普遍耗时,再根据耗时成因明确大致的优化思路、实施成本和预估收益 。
启动优化在完成了理论和现状分析后,就可以根据规划的路径来实施具体的启动优化项了 。在实施过程中,主要考虑主线程优化、后台线程优化和全局优化三个维度:
- 主线程耗时优化需要在启动全路径各阶段中细化具体的耗时成因,如:CPU Time、CPU Schedule、IO wait、Lock wait 等,完成耗时归因后可以使用逐步升级的优化策略来逐个击破:对于首屏所必须的耗时逻辑做正面优化(可使用缩减耗时逻辑、异步并发、延迟加载等手段)、对于非首屏必须的耗时逻辑做按需加载(需要架构优化的基础)、对于优化后仍存在耗时的逻辑尝试做业务降级(大都有损需评估全局收益);
推荐阅读
- 抖音运营如何分析对标账号,对标账号我们都需要分析哪些数据
- 玩转抖音平台的算法推荐逻辑
- 抖音流量这么大,如何简单有效的获取精准客户?
- 抖音SEO是什么?揭秘抖音搜索算法工作原理和推荐算法
- 2021抖音电商年度数据
- 提高 JavaScript 性能的 12 个技巧
- 抖音账号无故被限流,你可能已经踩了这4个坑,建议自查!
- 新申请的抖音账号怎么上热门,怎么才能获得更多的流量推荐?
- 抖音新号0粉如何赚钱?
- 抖音账号被限流,原因为何?有哪些补救措施?
