得物 iOS 启动优化之 Building Closure

我们探索了 BuildingClosure 的生成过程,发现在Building Closure阶段中,可能存在字符串的 Hash 碰撞 引发循环次数大幅增加,进而引发了启动耗时暴增,进而导致启动耗时的大幅增加。
一、神秘的 BuildingClosure
1. dyld && BuildingClosure
2. BuildingClosure 非常耗时
3. BuildingClosure 文件解析
二、离奇的启动耗时暴增事件
1. 启动耗时暴增 200ms
2. BuildingClosure 耗时异常变化定位
三、启动优化新秘境
1. Perfect Hash
2. 向前一步
四、总结
得物一直重视用户体验,尤其是启动时长这一重要指标。在近期的启动时长跟进中,我们发现了在BuildingClosure 阶段的一个优化方式,成功的帮助我们降低了 1/5 的 BuildingClosure 阶段的启动耗时。Building Closure 并非工程的编译阶段(虽然它有一个building),Building Closure 是应用初次启动时会经历的阶段,因此它会影响应用的启动时长。
单就BuildingClosure阶段而言,我们观察到该阶段其中一个函数从 480ms 暴增到 1200ms 左右(PC 电脑端运行 dyld 调试统计耗时数据),我们通过优化,将耗时从1200ms降低到110ms。即使相比最开始的情况,也相当于从480ms降低到了110ms,由此可见Building Closure 优化是应用进行启动优化必不可少的一个重要手段。因此在这里我们也和各位读者进行分享,期望能够对各自项目有所帮助。
一、神秘的 BuildingClosure
启动优化的技术、实现方案业界有不少的文章可以参考学习,这里不再额外赘述。我们来探索下启动过程中非常神秘的 BuildingClosure。
BuildingClosure 是在System Interface Initialization阶段 dyld 生成的,并且我们也无法做任何的干预,另外相关的剖析文章相对较少,所以说BuildingClosure 较为神秘,也是实至名归。
BuildingClosure 是由dyld在应用启动阶段执行的,所以想要了解 BuildingClosure 还是要从 dyld 开始了解。
dyld && BuildingClosure
Dyld 源码可以在 Apple GitHub 上查阅 https://github.com/apple-oss-distributions/dyld
相信大家都应该了解过,BuildingClosure 是在 iOS 13 引入进来的,对应的 dyld 为 dyld3,目的是为了减少启动环节符号查找、Rebase、Bind 的耗时。
核心技术逻辑是将重复的启动工作只做一次,在 App 首次启动、版本更新、手机重启之后的这次启动过程中,将相关信息缓存到 Library/Caches/com.app.dyld/xx.dyld 文件中,App 在下次启动时直接使用缓存好的信息,进而优化二次启动的速度。
在 iOS 15 Dyld4 中更是引入了 SwiftConformance,进一步解决了运行时 Swift 中的类型、协议检查的耗时。
图片
免责声明
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
最新文章
CDimension横空出世:立志从底层重建芯片技术栈
随着人工智能、机器人、量子计算与边缘计算等新兴应用对算力提出更高要求,传统硅基架构在能效、封装碎片化及带宽瓶颈等方面的物理极限日益显现。CDimension 正以一种根本性不同的技术路径,力图突破这
小米发布REDMI 15C:百元神机来袭,配置亮眼性价比高
小米近日在多个海外市场推出旗下最新入门级智能手机REDMI 15C,起售价为119美元,折合人民币约849元。作为小米旗下价格最为亲民的手机系列,该产品线历代机型均以高性价比著称,被许多用户称为百元
安富利:30载深耕中国市场,长期主义构筑可持续发展护城河
在安富利,我们始终坚信,ESG(环境、社会、公司治理)是驱动企业实现长期可持续发展的核心竞争力。 管理大师德鲁克曾说:“企业是社会的器官,任何企业得以生存,都是因为它满足了社会某一方面的需要,实现了
务必自查:Linux 爆出本地双杀提权漏洞,从 SSH 到 Root 只需一步?
这两个漏洞组合形成了从普通账号到 root 的完整提权链条,运维工程师们不能掉以轻心,引起足够重视,记得做好提前备份。 今天分享两个6月17号Qualys研究团队披露了公布的Linux漏洞。1 漏
国产动作游戏跻身日本销量榜前十,多款新作表现亮眼
跻身日本销量榜前十,多款新作表现亮眼 " >上周日本地区游戏销量排行榜正式公布,其中一款国产动作游戏失落之魂成功进入前十,引发广泛关注。在本期榜单前十名中,共有七款新作首次进入排行榜,若按不同平台合并
热门推荐
热门教程
更多- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程



















