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