Google 透露 Chrome 快速背后的一大秘密,Windows 系統(tǒng)獨占
時常關(guān)注 Google Chrome 瀏覽器更新的用戶應(yīng)該知道,Google 在過去幾年時間里為 Chrome 資源占用和速度提升做出了非常多的改進,其中包括標(biāo)簽頁凍結(jié)、更好的內(nèi)存管理和釋放,以及電池優(yōu)化。
近日 Google 發(fā)布博客,在博客中透露了他們?nèi)绾吾槍?Chrome 的窗口進行了優(yōu)化,從而使啟動速度提高 25.8%,崩潰次數(shù)減少 4.5%。
Google 此前已經(jīng)針對 Chrome 瀏覽器的非活躍標(biāo)簽頁進行凍結(jié)來減少 CPU、GPU 和內(nèi)存的使用,將更多的系統(tǒng)資源留給用戶真正所需的前臺標(biāo)簽頁。但這個方法僅限于那些沒有被放置在前臺、最小化或被移出屏幕的標(biāo)簽頁。
Google 在實驗中發(fā)現(xiàn),在用戶日常使用中有 20% 的 Chrome 瀏覽器窗口被其他應(yīng)用的窗口所覆蓋,或者說被遮擋。因此 Google 設(shè)想,如果能夠把這些被遮擋的窗口也當(dāng)作后臺標(biāo)簽來看待的話,Chrome 瀏覽器還會有更加明顯的性能提升?;谶@個設(shè)想,Google 大約在三年前開始研究一個項目,該項目能夠?qū)崟r追蹤每個窗口的遮擋狀態(tài),并降低被遮擋窗口中標(biāo)簽的優(yōu)先級。
Google 將這個項目稱為「Native Window Occlusion」,能夠獲取用戶屏幕上的本地非 Chrome 窗口的位置,再結(jié)合 Chrome 各個窗口自身的位置,從而計算出被遮擋的窗口和區(qū)域。
追蹤哪些 Chrome 窗口被遮擋有兩個主要部分,第一部分是遮擋計算,包括以 Z 軸為順序遍歷桌面上打開的窗口,查看每個 Chrome 窗口前面的窗口是否完全覆蓋了它;第二部分是決定何時進行遮擋計算。
Google 為了防止在進行遮擋計算時阻塞 UI 線程和降低 Chrome 的響應(yīng)速度,他們將遮擋計算放置在一個單獨的線程上來進行,并考慮了可能出現(xiàn)的眾多情況:
- 忽略最小化的窗口,因為它們本身就不可見。
 - 將不同虛擬桌面上的 Chrome 窗口標(biāo)記為被遮擋。
 - 從前到后遍歷桌面上打開的窗口,忽略不可見窗口、透明窗口、浮動窗口、隱形窗口等。
 - 從未被遮擋的屏幕矩形中減去窗口的區(qū)域。
 - 如果窗口是 Chrome 窗口,檢查其區(qū)域是否與未遮擋區(qū)域重疊。如果沒有,則表示 Chrome 窗口已被之前的窗口遮擋。
 - 繼續(xù)迭代,直到捕獲所有 Chrome 窗口。
 - ……
 
Google 在博客中表示,啟用該功能后的帶來了顯著的性能優(yōu)勢:
- 啟動速度提高 8.5% 到 25.8%
 - 顯存使用量減少 3.1%
 - 渲染器整體繪制的幀數(shù)減少 20.4%
 - 渲染器崩潰次數(shù)減少 4.5%
 - 首次輸入延遲降低 3.0%
 - 首次內(nèi)容繪制和最大內(nèi)容繪制速度提高 6.7%
 
該功能已于 2020 年 10 月作為 Chrome 86 版本的一部分向 Windows 用戶推出,Google 尚未表明該功能是否會在未來登陸 Linux 或 Mac 版 Chrome 瀏覽器。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:Google 透露 Chrome 快速背后的一大秘密,Windows 系統(tǒng)獨占
本文地址:https://www.oschina.net/news/173410/chrome-native-window-occlusion
















 
 
 


 
 
 
 