Chromium 開發人員總結了 8 年前啟動的 RenderingNG 專案的首批成果,該專案旨在開展持續工作以提高 Chrome 的效能、可靠性和可擴展性。
例如,與 Chrome 94 相比,Chrome 93 中添加的優化使頁面渲染延遲降低了 8%,電池續航時間提高了 0.5%。考慮到 Chrome 的用戶群規模,這些指標在全球範圍內每天可節省超過 1400 年的 CPU 時間。與先前的版本相比,新版 Chrome 的圖形渲染速度提高了 150% 以上,並且在出現問題的硬體上 GPU 驅動程式崩潰的可能性降低了 6 倍。
在已實現的可提升效能的方法中,值得一提的是,在 GPU 端並行化不同像素的光柵化操作,以及在不同的 CPU 核心之間更主動地分配處理器(執行 JavaScript、處理頁面滾動、解碼視訊和圖像以及進行預期內容渲染)。主動並行化的一個限制因素是 CPU 負載的增加,這會導致溫度和功耗的升高,因此在效能和功耗之間取得最佳平衡至關重要。例如,在使用電池供電時,您可以犧牲渲染速度,但不能犧牲單獨線程中的滾動處理,因為介面響應速度的下降對用戶來說是顯而易見的。
RenderingNG 專案中實現的技術徹底改變了合成方法,並允許自適應地使用不同的技術來優化與頁面各個部分相關的 GPU 和 CPU 計算,同時考慮到螢幕解析度和更新率等特性,以及系統對 Vulkan、D3D12 和 Metal 等高級圖形 API 的支援。最佳化範例包括主動使用 GPU 紋理快取和網頁部分渲染結果,以及在渲染時僅考慮使用者可見的頁面區域(渲染被其他內容覆蓋的頁面部分毫無意義)。
RenderingNG 的一個重要元素還在於處理頁面不同部分時的效能隔離,例如隔離與在 iframe 區塊中顯示廣告、顯示動畫、播放聲音和影片、滾動內容以及執行 JavaScript 相關的計算。

實施的優化技術:
- Chrome 94 引入了 CompositeAfterPaint,該機制支援將網頁中單獨渲染的部分進行合成,並動態調整 GPU 負載。根據從用戶收集的遙測數據,新的合成系統將滾動延遲降低了 8%,用戶響應速度提高了 3%,渲染速度提高了 3%,GPU 記憶體消耗降低了 3%,電池續航時間延長了 0.5%。
- GPU Raster 是一款基於 GPU 的光柵化引擎,於 2020 年在所有平台上推出,使 MotionMark 基準測試平均提升 37%,HTML 相關類別測試提升 150%。今年,GPU Raster 進行了擴展,新增了使用 GPU 加速渲染 Canvas 元素的功能,使輪廓渲染效能提升 1000%,MotionMark 1.2 基準測試提升 130%。
- LayoutNG 是對頁面元素佈局演算法的徹底改造,旨在提高可靠性和可預測性。該項目計劃於今年向用戶發布。
- BlinkNG — 重構並清理 Blink 引擎,將渲染操作拆分為多個階段,以提高快取效率,並根據視窗中物件的可見性簡化延遲渲染。這項工作計劃於今年完成。
- 將捲動、動畫和圖像解碼處理程序移至單獨的執行緒。該項目自 2011 年開始開發,並於今年實現了將 CSS 動畫轉換和 SVG 動畫移至單獨的線程。
- VideoNG 是一款高效可靠的網頁影片播放引擎。今年,它實現了以 4K 解析度顯示受保護內容的功能。此前,它還添加了 HDR 支援。
- Viz — 光柵化(OOP-R — 進程外光柵)和渲染(OOP-D — 進程外顯示合成器)的獨立進程,將瀏覽器介面的渲染與頁面內容的渲染分開。該專案還開發了 SkiaRenderer 進程,該進程使用特定於平台的圖形 API(Vulkan、D3D12、Metal)。這項改進使因圖形驅動程式問題導致的崩潰次數減少了 6 倍。
來源: opennet.ru
