Google將 Android 版 Chrome 的滾動盛宴減少了 48%
谷歌今天透露如何在 2023 年至 2026 年間減少 Android 版 Chrome 的滾動。
滾動卡頓是指頁面突然卡頓或跳躍。 「當設備無法及時渲染具有更新的滾動偏移量的幀時發生。」這項工作於 2023 年開始,旨在解決「優質行動網路體驗的最大顛覆者之一」。
平滑滾動(左)和平滑滾動(右)
Chrome 在刷新畫面之前渲染每一幀都有嚴格的時間範圍。如果延遲超過一幀的處理時間,顯示器必須顯示一個完整刷新週期的陳舊偏移量:在 60 Hz 顯示器上大約為 16.7 毫秒。人眼將這種失去的畫面視為可怕的、吵雜的口吃。
2023 年至 2026 年 Android 版 Chrome 中卡頓滾動的頻率變化
為了避免這種情況,Chrome 的輸入幀傳遞必須保持一致,或者「每次滾動更新都需要相同的時間來渲染到螢幕上」。與常規 Android 應用程式相比,Chrome 具有獨立的瀏覽器、渲染器和 GPU 進程,可提高穩定性、安全性和效能,但會增加滾動卡頓。
當使用者觸摸 Chrome 中的螢幕時,硬體會引發輸入事件,而不是進入執行緒或進程。它首先到達瀏覽器進程進行命中測試,然後發送到渲染器進程以計算新的滾動偏移量。 VSync 訊號遵循不同的路徑,甚至跨多個進程。在 GPU 進程中,它們到達 Viz 合成器執行緒並路由到渲染器進程,該進程綁定到輸入事件以繪製新幀。然後該幀被傳送到 GPU 進程,在 GPU 緩衝區中產生像素,最後由作業系統顯示在螢幕上。更複雜的是,Chrome 直接使用來自硬體的無緩衝輸入。這意味著輸入事件以不規則的間隔到達 Chrome,通常每個刷新週期會到達幾次。
考慮到多進程管道,Google 啟動了多個項目,透過「自動啟發式、有針對性的最佳化和深入的架構變更」來減少滾動行為。努力如下:
- 參賽公告: 作業系統輸入事件有時會被延遲,以致於輸入成幀器的寬限期也不夠。進一步延長寬限期並不是一個選擇,因為這會增加 Chrome 無法按時產生框架的風險。相反,如果作業系統在截止日期前未傳遞輸入事件,Chrome 會產生自己的合成滾動更新,並根據迄今為止看到的滾動曲線預測未來的滾動位置。
- Viz 中的瀏覽器控制項: 當用戶開始在 Android 上向下滾動網站時,瀏覽器控制項將從顯示器中刪除,以匹配正在滾動的網站。兩個表面的同步移動每個幀都涉及瀏覽器的主線程,因此有大量的視覺提示機會。我們更改了架構,允許 GPU 進程將每個幀的滾動偏移應用於瀏覽器控制項的螢幕截圖,而無需與主瀏覽器執行緒通訊。
- Android輸入執行緒優先權: 鏈條的強度取決於其最弱的一環。管道的速度僅與優先順序最低的依賴項一樣快。我們發現登入事件有時需要很長時間才能到達 Chrome,因為相應的作業系統執行緒被其他優先順序較低的任務搶佔。我們與 Android 合作,確保負責向 Chrome 提供硬體輸入的所有執行緒都有足夠的優先權。
FTC:我們使用附屬連結來賺取收入。 更多的