Apple 如何增强 iOS 15 和 macOS Monterey 中应用的发布速度

iMac Launchpad Big Sur

当您启动 iOS 15macOS Monterey 今年秋天首次,您除了新的 FaceTime 功能和 Safari 的变化之外,我们可能会注意到一些其他的东西:速度的提高。一位深入研究了苹果新操作系统代码的开发人员表示,苹果极大地改变了应用程序与系统的通信方式,并且可以大大减少启动所需的时间。

iOS 开发者和前 Apple 员工Noah Martin 在阅读Xcode 13 发行说明

使用 macOS 12 或 iOS 15 或更高版本的部署目标构建的所有程序和 dylib 现在都使用链式修复格式。这使用不同的加载命令和 LINKEDIT 数据,并且不会在旧操作系统版本上运行或加载。

这听起来可能没什么,但是这两句话解释了可以改变您的 Mac 和 iPhone 体验的技术。 Martin 做了一些侦探工作来了解这一变化背后的原因,正如他在这是一篇冗长且技术性很强的中等帖子,针对 iOS 15 和 macOS 12 优化的应用的启动速度可能会比现在快得多。

它是如何工作的

由于 iOS 和 macOS 目前可以运行,所以所有应用程序都以捆绑包的形式创建。与 Windows 不同,应用程序在一个包中配备了最必要的组件。应用程序基本上是包含各种程序组件的文件夹。 (如果您有 Mac,您可能知道这一点。在 Finder 中右键单击某个应用程序,您将看到菜单项”显示包内容”,可让您查看应用程序内部。)此外,应用程序还会加载带有动态链接器进程(dyld)的共享库,然后将其复制到系统的 RAM 中,以便在程序运行时快速访问。

RAM 由所谓的页面组成,每个页面只有 16 KB 的容量,并且只要应用程序运行就一直存在。到目前为止,dyld 进程已逐渐打包这些表,这基本上延迟了应用程序的启动。据 Martin 了解到,Apple通过链、修复和指针解决了 iOS 15 和 macOS 12 中的问题通过逐步将各个应用程序组件和共享库分别加载到 RAM 中,指针可以将高达 64 GB 的应用程序链接起来,并通过修复将它们相互连接。

听起来很复杂,其实很简单。 RAM 内容现在以链的形式相互连接。这节省了大量的元数据,否则这些元数据将用于管理,从而使整个 RAM 管理更加高效。此外,长时间未使用的 RAM 页也会被压缩。

根据马丁的说法,这个新系统有两个结果。可用内存量得到优化,并且内存中二进制内容的有针对性的分布可确保更快的应用程序启动。在他的测试中,Martin 能够节省高达 50% 的元数据,这些元数据是通过 dyld 进程导入的,最终使应用程序能够更快地启动。

我们很快就会看到它是如何工作的。 Apple 已经发布了 iOS 15 和 macOS 12 的第三个测试版,可能分别于 9 月和 10 月发布。

本文源自 Macwelt,由 Christian Rentrop 编写。