抖音如何通过动态库优化实现高效构建.pdf

编号:627124 PDF 36页 4.84MB 下载积分:VIP专享
下载报告请您先登录!

抖音如何通过动态库优化实现高效构建.pdf

1、从分钟到秒:抖如何通过动态库优化实现效构建演讲:张星宇字节跳动/软件程师01020304录背景动态库的优势与挑战核作流程与原理收益与规划01构建耗时的瓶颈与思考背景抖线下开发成本每天构建次数约 4000 次改代码到跑起来时(优化前)平均每次超过 3 分钟均构建成本(优化前)超过 200 时90%的构建属于增量构建,其耗时直接决定研发效率增量构建代码改动量极,缓存命中率,付出的等待时间是否合理增量构建的耗时分布源码到进制 MachO 的过程动态库或可执件的成过程LLDB 启动调试准备的过程App 传输到机的过程关键阶段耗时统计度量1.侵式:基于开源具链直接改造,更灵活定制,抖选择了这个案 2.侵

2、式:基于 LLDB 插件和 FishHook,拦截关键步骤,需改动原具链,字节跳动终端技术公众号之前分享过。调试启动1.Xcode 有显示但是没有志存储 2.通过 log stream 命令监听系统志流 3.匹配启动和结束关键字计算耗时产物安装耗时的影响因素编译参与链接的静态库越多,静态库的体积越,符号总数越多,链接速度越慢链接改动的代码,以及受这些改动(如头件)影响的代码越多,速度越慢Xcode 安装时会较件的哈希。有改动的件越多、件体积越,安装速度越慢产物安装LLDB 会加载、解析并缓存动态库或可执件的原数据。改动的动态库或可执件越,调试启动越慢调试启动常的解决案对InjectionMer

3、gable LibraryPreview原理 基于 Runtime 的能,动态库替换原来的实现开发阶段组件转换为动态库加速开发,线上再合并提性能基于 Swift 的动态能实现运时替换稳定性低,对语有要求,部分 Swift 语法不能热重载会导致崩溃,原动态库中等。稳定性有保障,但是流程,偶尔出问题使成本中等,有定的接和学习使成本,适配和改造成本,只持动态库或 SPM 程,不持 cocoapods 静态库。不持断点。性能,实时效中等,底层动态库改动会沿着依赖链路反向传递中,部分场景会退化为普通编译可定制性,基本开源低,依赖 ld-prime 链接器,不可定制低,依赖 Xcode 内部多个服务,不可

4、定制与程复杂度关的常数级耗时性能理想中的案全流程主可控透明业务接和改造适配成本易不依赖或限制语特性通不会打断或阻塞研发稳定53214桶效应 缺点决定成败02动态库虽好,但使要注意动态库的优势与挑战动态库的优势链接产物安装调试启动Xcode 只需要传输动态库,其它部分改动,动态库安装速度快LLDB 只加载解析动态库,其它部分改动,调试启动速度快构建系统只需要重新链接动态库,其它部分改动,动态库链接速度快理想中的程架构App组件 1App组件 组件 2组件 1000Dev.framework组件 3组件 4Core.framework组件 1组件 2组件 6组件 1000组件 5组件 静态库转动态

5、库的问题不宜多:动态库对其依赖的静态库具有“吸附性”不可少:动态库对完备性具有极的要求组件 A静态库 B静态库 CA.framework组件 DD.frameworkABCBCD动态库对架构的要求组件 A组件 B组件 C组件 D组件 E组件 F组件 H组件 G组件 J除找到依赖完备的若组件,否则法链接成功 这对程架构提出了极的要求,很难实现并保持组件 C、F、J 理论上可以构成动态库 将来组件 C 需要依赖组件 D 怎么办CFJ.framework动态库相互依赖动态库不可能存在相互依赖关系,任意静态库有可能强制转换动态库么?Dev.frameworkCore.frameworkmissing

6、symbol Adefining symbol Bdefining symbol Amissing symbol B03FocusLink 作流程动态查找符号Core.frameworkdyldDev.frameworkDynamic lookup symbol AlibPod1.aMissing Symbol A参数:-U/-undefined dynamic_lookupstatic linkerDev.frameworkDynamic lookup symbol ADev.frameworkSymbol A in Core.framework编译:

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(抖音如何通过动态库优化实现高效构建.pdf)为本站 (山海) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
客服
商务合作
小程序
服务号
折叠