iOS 12 比 iOS 11 更快、更平滑了,升級(jí)了的鋒友肯定都同意這一點(diǎn)。但蘋果為了讓 iOS 12 變快究竟做了哪些升級(jí)呢,只有發(fā)布會(huì)上說(shuō)的調(diào)整處理器運(yùn)算資源嗎?當(dāng)然不是,在昨天“Cocoa Touch 的新特性”這場(chǎng)演講中,蘋果為我們介紹了針對(duì) iOS 12 做出的一系列改變。
改進(jìn)預(yù)加載功能
在 iOS 12 中,蘋果工程師攻克了困擾用戶數(shù)年的卡頓問(wèn)題,他們?cè)跈z查官方 App 時(shí)發(fā)現(xiàn)了過(guò)去丟幀的原因。在 iOS 中,用戶滑動(dòng)、點(diǎn)擊屏幕的時(shí)候就需要即時(shí)渲染生成內(nèi)容,比如說(shuō)菜單列表或者是文檔中的圖形,這個(gè)生成的過(guò)程花費(fèi)的時(shí)間就會(huì)導(dǎo)致延遲。
為了降低這一延遲,蘋果在 iOS 10 中引入了一個(gè)名為“Cell Pre-fetch”的功能,簡(jiǎn)單來(lái)說(shuō)就是在后臺(tái)預(yù)測(cè)用戶的動(dòng)作,然后預(yù)先加載好相應(yīng)的內(nèi)容,當(dāng)用戶確定了這個(gè)點(diǎn)擊或滑動(dòng)馬上把預(yù)加載好的內(nèi)容呈現(xiàn)上來(lái),這樣一來(lái)就不會(huì)延遲了,而且不會(huì)出現(xiàn)處理器負(fù)載突然加大的問(wèn)題。
雖然“Cell Pre-fetch”確實(shí)讓 iOS 10 變快了,但是仍然沒(méi)有完全解決丟幀問(wèn)題,工程師們發(fā)現(xiàn),當(dāng)系統(tǒng)在預(yù)加載內(nèi)容的時(shí)候,處理器也同時(shí)在渲染確定會(huì)在屏幕上呈現(xiàn)的那一組內(nèi)容,二者同時(shí)進(jìn)行就會(huì)導(dǎo)致 CPU 遇到瓶頸,然后兩個(gè)任務(wù)就都變慢了。
為了解決這一問(wèn)題,蘋果在 Cocoa Touch (開(kāi)發(fā)者創(chuàng)建 iOS App 時(shí)使用的接口)中重新對(duì)任務(wù)進(jìn)行了排序,在屏幕渲染任務(wù)完成之后,預(yù)加載才啟動(dòng),因?yàn)榍罢咝枰R上被用戶看到,更加重要。
CPU響應(yīng)機(jī)制升級(jí)
除了這一點(diǎn)之外,CPU 也有一定的升級(jí)。此前的 iOS 設(shè)備中,在 CPU 負(fù)載很小的時(shí)候也會(huì)發(fā)生丟幀,因?yàn)樵谌蝿?wù)很少的時(shí)候 CPU 會(huì)降低頻率進(jìn)入怠速模式。但是如果用戶突然觸發(fā)了一個(gè)比較麻煩的任務(wù),CPU 就需要一點(diǎn)時(shí)間反應(yīng)過(guò)來(lái)然后加快頻率,這一過(guò)程中就會(huì)發(fā)生延遲。
而在 iOS 12 中,蘋果優(yōu)化了 CPU 的響應(yīng)機(jī)制,能更快地從低頻提升到高頻,并且 iOS 12 還很聰明,不會(huì)把 CPU 的頻率拉得太高,只會(huì)提供完成這個(gè)任務(wù)所需要的那個(gè)頻率上,所以在完成任務(wù)之后,CPU 也能夠很快將頻率降到合適的怠速水平,減少電池的消耗。
Auto-layout (自動(dòng)布局)功能升級(jí)
緊接著還有對(duì) Auto-layout (自動(dòng)布局)功能的升級(jí),Auto-layout 讓開(kāi)發(fā)者能對(duì) App 內(nèi)的圖標(biāo)、文字等元素更方便地定位(比如據(jù)邊框多少像素),以適應(yīng)不同的屏幕尺寸。但是蘋果工程師發(fā)現(xiàn)這個(gè)從 iOS 6 就有的功能現(xiàn)在看來(lái)有些過(guò)于耗費(fèi)資源了,在不同的情況下, Auto-layout 使用的資源可能會(huì)呈指數(shù)級(jí)增長(zhǎng),比如元素在嵌套和依賴于其他元素進(jìn)行放置兩種狀態(tài)下,耗費(fèi)的資源大不相同。
在 iOS 12 中,蘋果大大減少了會(huì)導(dǎo)致指數(shù)縮放的元素,減輕了對(duì) CPU 和 GPU 的負(fù)擔(dān)。總體來(lái)看,讓渲染的元素彼此獨(dú)立放置、互不干擾能夠減少資源消耗。
自動(dòng)備份存儲(chǔ)技術(shù)
最后,蘋果還介紹了 iOS 12 的自動(dòng)備份存儲(chǔ)技術(shù),它可以減少應(yīng)用程序運(yùn)行的時(shí)候消耗的內(nèi)存量。在蘋果的演示中,當(dāng)舊版系統(tǒng)渲染相同大小的彩色照片和灰度圖像(只存在灰度信息的黑白照片)時(shí),耗費(fèi)的內(nèi)存竟然是完全一樣的,但其實(shí)這兩張照片包含的信息存在顯著差異,彩色照片每個(gè)像素都有色值等信息,黑白照片只有灰度信息。
而在使用自動(dòng)備份存儲(chǔ)技術(shù)之后,系統(tǒng)會(huì)對(duì)不同文件包含的數(shù)值信息進(jìn)行一個(gè)初步的判斷,然后再分配合適的內(nèi)存給它,不會(huì)像以前那樣一視同仁地處理所有內(nèi)容,這樣做顯然可以避免浪費(fèi)內(nèi)存資源。
除了以上四點(diǎn)之外,蘋果還介紹了不少加快系統(tǒng)運(yùn)作的方法。不過(guò)在演講的最后,工程師還是表示現(xiàn)在他們正在積極地對(duì)這些功能展開(kāi)工作,希望在 iOS 12 正式版上線之前(今年九月)完成優(yōu)化,如果無(wú)法完成,可能會(huì)推遲幾個(gè)版本。