苹果如何在iOS15和macOSMonterey中启动应用程序

陪沵刂最终-
阅读

苹果如何在iOS15和macOSMonterey中启动应用程序

今年秋天,您的应用程序加载速度可能会快得多。当你今年秋天第一次启动iOS 15和macOS Monterey时,你可能会注意到新的 FaceTime 功能和 Safari 变化之外的一些东西:提高了速度。一位深入研究 Apple 新操作系统代码的开发人员表示,Apple 已经显着改变了应用程序与系统通信的方式,并且可以大大缩短启动时间。

iOS 开发人员和前 Apple 员工 Noah Martin 在阅读Xcode 13的发行说明时发现了一个有趣的地方 :

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

这听起来可能不多,但这两个句子解释了可以改变您使用 Mac 和 iPhone 体验的技术。Martin 做了一些侦探工作来了解这一变化背后的原因,正如他在一篇冗长且技术性很强的 Medium 帖子中所描述的那样,针对 iOS 15 和 macOS 12 优化的应用程序的启动速度可能比现在快得多。

这个怎么运作

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

RAM 由所谓的页面组成,每个页面只有 16 K今年秋天,您的应用程序加载速度可能会快得多。当你今年秋天第一次启动iOS 15和macOS Monterey时,你可能会注意到新的 FaceTime 功能和 Safari 变化之外的一些东西:提高了速度。一位深入研究 Apple 新操作系统代码的开发人员表示,Apple 已经显着改变了应用程序与系统通信的方式,并且可以大大缩短启动时间。

iOS 开发人员和前 Apple 员工 Noah Martin 在阅读Xcode 13的发行说明时发现了一个有趣的地方 :

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

这听起来可能不多,但这两个句子解释了可以改变您使用 Mac 和 iPhone 体验的技术。Martin 做了一些侦探工作来了解这一变化背后的原因,正如他在一篇冗长且技术性很强的 Medium 帖子中所描述的那样,针对 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 月发布。用程序的启动。正如 Martin 了解到的那样, Apple 在 iOS 15 和 macOS 12 中通过链、修复和指针解决了这个问题——而不是逐渐将单个应用程序组件和共享库分别加载到 RAM 中,因此指针可以将应用程序链接到高达 64 GB 并连接他们通过修复彼此。

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

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

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

阅读
本文由用户上传,如有侵权请联系删除!

撰写回复
更多知识