RenderingNG项目实现的Chromium优化结果

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 上的计算,同时考虑到屏幕分辨率和刷新率等功能,以及系统中对高级图形 API 的支持,例如 Vulkan、D3D12 和 Metal。 优化的例子包括主动使用缓存 GPU 纹理和部分网页的渲染结果,以及渲染时仅考虑用户可见的页面区域(渲染部分网页是没有意义的)被其他内容覆盖的页面)。

RenderingNG 的一个重要元素也是在处理页面不同部分时隔离性能,例如,隔离与在 iframe 中投放广告、显示动画、播放音频和视频、滚动内容以及执行 JavaScript 相关的计算。

RenderingNG项目实现的Chromium优化结果

实施的优化技术:

  • 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

添加评论