
文章插图
在完成前述的全局优先级排布及方案制定后,才算真正来到了实施优化的阶段,在这个阶段所要用到的各类优化策略及配合方法在前文方法论部分已有详细讲述,在实战部分首先要补充一下前述几类优化策略按照“性能无损”、“业务无损”的区别划分,整体如上图所示,此外,我们会结合抖音启动优化实战经验列举各优化策略下可实施的优化项,以供参考:
- 正面优化:删减非必要的启动逻辑、开屏页与首页 Activity 合并、获取进程名从 IPC 转反射方式等;
- 按需优化:ContentProvider 中过早初始化逻辑转为使用时初始化、多进程由启动时加载转为使用时或特定场景触发加载等;
- 延迟优化:4.x 机型延迟执行 Multidex.install 中的 Odex 操作、主线程消息队列中非启动必要消息延迟执行、启动路径非高优业务逻辑延迟初始化等;
- 运行时优化:CPU 提频、语言层面优化(内联、替换反射、避免用 Kotlin 的 Range 循环)、关闭 Verify Class、4.x 机型抑制 GC、主动触发 AOT 编译、资源重排、类重排、dex 重排等;
- 异步优化:异步预加载(ShardPreference、实例化对象)、异步 inflate view、线程收敛等;
- 降级优化:极速版、组件化降级、非必要耗时逻辑按人群/地区降级等;
- 综合优化:启动任务调度框架、启动路径重构、前后台启动任务精细化重排、后台负载优化等,这些优化项属于前述优化思想的综合应用,一般不局限于单方面的优化 。
线上验证的实践这部分在前述的方法论中已针对三个关键点阐述得比较细致,这里仅针对三个关键点在落地时的技巧或注意事项加以补充:
- 线下的优化一定要有线上的指标反馈:由于线上设备的固有硬件性能各异,所以需要有足够量级的用户启动打点数据才能相对准确地判定线下的优化是否在线上产生了效果,这个量级从抖音启动优化中摸索的经验来看一般达到 100 万即可;此外,观测启动性能数据的时间点也需要把控好,这是由于每次发布升级版 APP 后,大都是性能相对好的手机会先升级,这个现象会等导致发版初期的启动性能数据整体偏好,不能反映真实大盘情形,因此,抖音一般会选取每个版本发版后 4-5 天(可能随 APP 升级覆盖安装的速度不同而不同)的数据判定大盘情形 。
- 线上指标需要结合均值与分位值综合来评估:在抖音启动优化实践中,启动耗时均值会更多用于大盘情形评估或线上监控中,而作为性能优化的同学最主要关注的是 50 分位机型的数据,这是能代表过半数用户启动性能水准的指标,此外 90 分位以上的机型也需要我们额外关注,这类机型非常容易放大启动性能问题,从实际来看,90 以上相对 50 的绝对分位数差了不到一倍,但冷启耗时却可能差到 2 倍左右(如下图所示抖音在某段时期的各分位冷启耗时情形),这说明低端机的用户启动体验是明显可感知的差,基于我们曾经做过的劣化实验结果来看,这些机型的启动性能如果不能有效提升,将有很大概率减少其留存 。

文章插图
- 在验证收益时通过 AB 实验达成:AB 实验相对于观测不同版本的大盘数据来看更具有严谨性,因此在产出实验结论前同样需要保障数据量和时间跨度,抖音在开启性能的 AB 实验后,一般会让对照组及实验组进组用户各达到 100 万并保持至少 5 天后才进行实验的数据分析并产出结论,这样可以基本保障所有相关指标的稳定及置信 。
推荐阅读
- 抖音运营如何分析对标账号,对标账号我们都需要分析哪些数据
- 玩转抖音平台的算法推荐逻辑
- 抖音流量这么大,如何简单有效的获取精准客户?
- 抖音SEO是什么?揭秘抖音搜索算法工作原理和推荐算法
- 2021抖音电商年度数据
- 提高 JavaScript 性能的 12 个技巧
- 抖音账号无故被限流,你可能已经踩了这4个坑,建议自查!
- 新申请的抖音账号怎么上热门,怎么才能获得更多的流量推荐?
- 抖音新号0粉如何赚钱?
- 抖音账号被限流,原因为何?有哪些补救措施?
