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

2024-11-25 11:23 互联网

今年秋天,您的应用程序加载速度可能会快得多。当你今年秋天第一次启动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 月发布。

点赞

全部评论

相关阅读

苹果与LadyGaga和DuaLipa合作进行混音课程

随着苹果面临棘手的问题好时光可能会停止

iFixit证明苹果可以在AirTag上增加一个钥匙圈孔

如何在戴着口罩的情况下使用苹果Watch解锁iPhone

苹果上个季度怎么赚了这么多钱

苹果Maps如何报告事故速度检查和危险

苹果WatchSeries6发货时没有重要配件

如何控制iOS中照片和其他应用程序中的隐藏音量

如何将苹果LEDCinemaDisplay连接到新的MacBook

下一款苹果Watch可能会获得其他可穿戴设备所没有的健康功能

苹果WatchSeries6和SE差异缺失的功能和精美的印刷

苹果使用macOSBigSur11.5.1修补关键安全漏洞

如何在iPhone上设置医疗ID

macOSMonterey如何使用实时文本和视觉查找

如何在macOS的终端中查看命令历史记录列表

macOSMonterey全键盘访问如何从鼠标中解放出来

苹果如何让Mac用户在WWDC上非常开心

两个最好的Prime会员日苹果优惠仍然可用

苹果Music+和第三代AirPods可能会在下周推出

这些是我们希望苹果制造的产品