dyld2 dyld3
dyld2 & dyld3
观看https://developer.apple.com/videos/play/wwdc2017/413/ 记录
在 iOS 13 之前,所有的第三方 App 都是通过 dyld 2 来启动 App 的,主要过程如下:
- 解析 Mach-O 的 Header 和 Load Commands,找到其依赖的库,并递归找到所有依赖的库
- 加载 Mach-O 文件
- 进行符号查找
- 绑定和变基
- 运行初始化程序
上面的所有过程都发生在 App 启动时,包含了大量的计算和I/O,所以苹果开发团队为了加快启动速度,在 WWDC2017 - 413 - App Startup Time: Past, Present, and Future[4] 上正式提出了 dyld3。
dyld3 被分为了三个组件:
(1)本进程外的Mach-O分析器/编译器
- 预先处理了所有可能影响启动速度的 search path、@rpaths 和环境变量
- 然后分析 Mach-O 的 Header 和依赖,并完成了所有符号查找的工作
- 最后将这些结果创建成了一个启动闭包
- 这是一个普通的 daemon 进程,可以使用通常的测试架构
(2)本进程内执行”lauch closure“的引擎
- 验证启动闭包的安全性,然后映射到 dylib 之中,再跳转到 main 函数
- 不再需要解析 Mach-O 的 Header 和依赖,也不需要符号查找。
(3)一个启动闭包缓存服务
系统 App 的启动闭包被构建在一个 Shared Cache 中, 我们甚至不需要打开一个单独的文件
对于第三方的 App,我们会在 App 安装或者升级的时候构建这个启动闭包。
在 iOS、tvOS、watchOS中,这一切都是 App 启动之前完成的。在 macOS 上,由于有 Side Load App,进程内引擎会在首次启动的时候启动一个 daemon 进程,之后就可以使用启动闭包启动了。
dyld 3 把很多耗时的查找、计算和 I/O 的事前都预先处理好了,这使得启动速度有了很大的提升。
dyld2 dyld3相关推荐
- app启动页数秒加载 代码_iOS 底层探索 - 应用加载
一.前导知识 以下参考自 WWDC 2016 Optimizing App Startup Time : 1.1 Mach-O Mach-O is a bunch of file types for ...
- iOS之性能优化·优化App的启动速度
抛砖引玉 启动是 App 给用户的第一印象,启动越慢用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环. 苹果是一家特别注重用户体验的公司,过去几年一直在优化 App 的启动时间,特别是去年 ...
- iOS之深入解析Xcode 13正式版发布的40个新特性
一.前言 Xcode 13 包括适用于 iOS 15.iPadOS 15.tvOS 15.watchOS 8 和 macOS Big Sur 11.3 的 SDK. Xcode 13 Release ...
- wpf 加载page后启动_App启动之Dyld在做什么
App启动之Dyld在做什么 前言 这里主要剖析一下一个App从点击图标,到展现首页的整个过程. App是如何启动的 按顺序划分 加载可执行文件(读取Mach-O) 加载动态库(Dylib) Reba ...
- 深入理解iOS App的启动过程
前言 启动时间是衡量应用品质的重要指标. 本文首先会从原理上出发,讲解iOS系统是如何启动App的,然后从main函数之前和main函数之后两个角度去分析如何优化启动时间. 准备知识 Mach-O 哪 ...
- 深入理解iOS APP启动过程
前言 启动时间是衡量应用品质的重要指标. 本文首先会从原理上出发,讲解iOS系统是如何启动App的,然后从main函数之前和main函数之后两个角度去分析如何优化启动时间. 准备知识 Mach-O 哪 ...
- iOS应用的启动流程和优化详解
一.应用启动流程 1.整体过程 (1)解析Info.plist 加载相关信息,例如如闪屏 沙箱建立.权限检查 (2)Mach-O(可执行文件)加载 dylib loading time(动态库耗时) ...
- ios启动时间优化--理论
启动时间是衡量应用品质的重要指标. 本文首先会从原理上出发,讲解iOS系统是如何启动APP的,然后从main函数之前和main函数之后俩个角度去分析如何优化启动时间. mach-O 哪些名词指的是Ma ...
- 老司机 iOS 周报 #22 | 2018-06-04
老司机 iOS 周报,只为你呈现有价值的信息. 你也可以为这个项目出一份力,如果发现有价值的信息.文章.工具等可以到 Issues 里提给我们,我们会尽快处理.记得写上推荐的理由哦.有建议和意见也欢迎 ...
最新文章
- 编程以外积累: 如何给项目生成类似VS2008的说明文档
- Entity Framework的启动速度优化
- 计算机科学概论各章总结,计算机科学概论(原书第5版)读书笔记
- 反射动态创建对象_Json为例
- 智能驾驶系统是怎样看懂交通标志的?3张流程图给你讲明白
- vs2005中的aspnetdb(转)
- 【问题记录】python 函数 传入一个对象返回一个对象值得注意
- eclipse 与my eclipse区别,IDE
- Atitit java js groupby 分组操作法
- 《微波工程》阅读杂记一
- 2010计算机一级选择题,计算机一级考试选择题题库(2010年最新版)
- 使用谷歌浏览器下载的图片webp怎么转成jpg格式图片
- Win10笔记本电脑设置插入鼠标时自动禁用触摸板
- 四则运算生成程序(基于控制台)
- C++线程编程-内存顺序
- 360与QQ大战,网友昨晚热论看大片
- Iphone8 plus系统照片为什么电脑打不开 打开heic文件教程
- 从平民到帝皇——给企业主的启示
- Beautiful Soup:4 kinds of objects
- 用速腾RS16跑LeGO-LOAM
热门文章
- b和B的区别?以及b、B、KB、MB、TB、PB、EB的换算
- make问题:make[1] entering directory
- AD10软件导入CAD图纸尺寸
- [Swift]LeetCode1104. 二叉树寻路 | Path In Zigzag Labelled Binary Tree
- YOLO&Deepsort的车速&车流量检测系统(源码&部署教程)
- 激光雷达赛道“白刃战”?硅光芯片级FMCW技术进入量产周期
- APICloud开发之新手上路!自定义Loader编译后安装包解析出错。
- rust 调用 java_自从尝了 Rust,Java 突然不香了
- 【Python】unicode编码和bytes编码不能混用
- 「深度」比天气还热的无人超市,是真有料还是在玩模式?