从分钟到秒:抖音如何通过动态库优化实现高效构建

所属专题:越挫越勇的大前端

嘉宾 : 张星宇 | 字节跳动软件工程师

会议室 : 北京厅3

讲师介绍

专题演讲嘉宾:张星宇

字节跳动软件工程师

2018 年加入字节跳动,持续专注于客户端研发效能方向。曾主导公司内组件发布、Pipeline 编排、移动端 DevOps 平台从零到一的建设。目前负责编译构建、索引调试等客户端研发效率和体验的优化工作。

议题介绍

演讲:从分钟到秒:抖音如何通过动态库优化实现高效构建

日常开发中的任何一次改动,都需要经历编译、产物传输到真机、调试启动等步骤才能看到最终效果。抖音作为一个超大规模的 App,往往需要两三分钟后才能看到运行效果。且正随着工程复杂度的增加而持续劣化中,严重影响了研发效率。

本次演讲首先会分析主要的耗时步骤,可能的度量方式与优化思路。其次会简单对比业内其它优化方案(比如 Preview、Mergable Library、Injection 等)的优缺点。最后会深度介绍抖音为何选择利用动态库的特性,结合对研发流程和构建工具链的改造,对构建用时进行大幅优化,并且保持在与工程复杂度无关的常数级别,完成彻底的治理。

演讲提纲

1. 项目背景

  • 增量构建各阶段主要耗时瓶颈分析和度量方式
  • 业内常见的优化方案介绍,各自优缺点分析

2. 核心实现流程

  • 基于动态库方案的优势及挑战
  • 链接器的工作模型和动态库常见的符号问题
  • 构建流程与链接器配合调整,保障产物正确性
  • 常见的不兼容动态库的场景,以及适配方案

3. 落地收益与未来规划

  • 在抖音的实际落地效果与收益
  • 渐进式迭代思路

您认为,这样的技术在实践过程中有哪些痛点?

  • 部分特殊的业务代码如果没有考虑过动态库场景,有一定的适配成本
  • 部分改动需要对构建步骤有一定的调整,需要结合构建系统(比如 Bazel)的支持才能达到完全无侵入的体验
  • 工程规模越大,方案收益越大。对于中小型业务来说收益就不一定足够明显

演讲亮点

  • 利用动态库的方式完成秒级链接和构建耗时的大幅降低
  • 基于对构建工具链的改动保障任意多个组件可以转换为动态库
  • 通过将线性复杂度降维成常数复杂度,对关键耗时步骤进行根本性的优化治理

听众收益

  • 对构建各个环节的主要耗时点、度量方式、可能的优化思路有整体的了解
  • 对动态库的原理和优点有更深入的理解
  • 对链接器的工作原理有更深入的理解

交通指南

北京石景山万达嘉华酒店

Wanda Jin
地址:北京市石景山区石景山路甲18号院
  • 微信咨询

  • 电话咨询

    联系电话:+86 18514549229

微信联系我们

如您在购票过程中遇到问题,请扫码咨询票务小助手