iOS 12 比 iOS 11 更快、更平滑了,升级了的网友肯定都同意这一点。但苹果为了让 iOS 12 变快究竟做了哪些升级呢,只有发布会上说的调整处理器运算资源吗?当然不是,在昨天“Cocoa Touch 的新特性”这场演讲中,苹果为我们介绍了针对 iOS 12 做出的一系列改变。改进预加载功能在 iOS 12 中,苹果工程师攻克了困扰用户数年的卡顿问题,他们在检查官方 App 时发现了过去丢帧的原因。在 iOS 中,用户滑动、点击屏幕的时候就需要即时渲染生成内容,比如说菜单列表或者是文档中的图形,这个生成的过程花费的时间就会导致延迟。
为了降低这一延迟,苹果在 iOS 10 中引入了一个名为“Cell Pre-fetch”的功能,简单来说就是在后台预测用户的动作,然后预先加载好相应的内容,当用户确定了这个点击或滑动马上把预加载好的内容呈现上来,这样一来就不会延迟了,而且不会出现处理器负载突然加大的问题。虽然“Cell Pre-fetch”确实让 iOS 10 变快了,但是仍然没有完全解决丢帧问题,工程师们发现,当系统在预加载内容的时候,处理器也同时在渲染确定会在屏幕上呈现的那一组内容,二者同时进行就会导致 CPU 遇到瓶颈,然后两个任务就都变慢了。
为了解决这一问题,苹果在 Cocoa Touch (开发者创建 iOS App 时使用的接口)中重新对任务进行了排序,在屏幕渲染任务完成之后,预加载才启动,因为前者需要马上被用户看到,更加重要。
CPU响应机制升级除了这一点之外,CPU 也有一定的升级。此前的 iOS 设备中,在 CPU 负载很小的时候也会发生丢帧,因为在任务很少的时候 CPU 会降低频率进入怠速模式。但是如果用户突然触发了一个比较麻烦的任务,CPU 就需要一点时间反应过来然后加快频率,这一过程中就会发生延迟。而在 iOS 12 中,苹果优化了 CPU 的响应机制,能更快地从低频提升到高频,并且 iOS 12 还很聪明,不会把 CPU 的频率拉得太高,只会提供完成这个任务所需要的那个频率上,所以在完成任务之后,CPU 也能够很快将频率降到合适的怠速水平,减少电池的消耗。Auto-layout (自动布局)功能升级紧接着还有对 Auto-layout (自动布局)功能的升级,Auto-layout 让开发者能对 App 内的图标、文字等元素更方便地定位(比如据边框多少像素),以适应不同的屏幕尺寸。但是苹果工程师发现这个从 iOS 6 就有的功能现在看来有些过于耗费资源了,在不同的情况下, Auto-layout 使用的资源可能会呈指数级增长,比如元素在嵌套和依赖于其他元素进行放置两种状态下,耗费的资源大不相同。
在 iOS 12 中,苹果大大减少了会导致指数缩放的元素,减轻了对 CPU 和 GPU 的负担。总体来看,让渲染的元素彼此独立放置、互不干扰能够减少资源消耗。自动备份存储技术最后,苹果还介绍了 iOS 12 的自动备份存储技术,它可以减少应用程序运行的时候消耗的内存量。在苹果的演示中,当旧版系统渲染相同大小的彩色照片和灰度图像(只存在灰度信息的黑白照片)时,耗费的内存竟然是完全一样的,但其实这两张照片包含的信息存在显著差异,彩色照片每个像素都有色值等信息,黑白照片只有灰度信息。而在使用自动备份存储技术之后,系统会对不同文件包含的数值信息进行一个初步的判断,然后再分配合适的内存给它,不会像以前那样一视同仁地处理所有内容,这样做显然可以避免浪费内存资源。除了以上四点之外,苹果还介绍了不少加快系统运作的方法。不过在演讲的最后,工程师还是表示现在他们正在积极地对这些功能展开工作,希望在 iOS 12 正式版上线之前(今年九月)完成优化,如果无法完成,可能会推迟几个版本。