近日,Chrome 开发者 David Bienvenu 在其名为《The Fast and the Curious》系列新博文中,具体“揭秘”了谷歌最近对 Chrome 浏览器所做的一些改良。其中,就包含了谷歌历时 3 年钻研创立的 Native Window Occlusion(原生窗口遮挡) 我的项目,可让浏览器启动速度晋升 25%。
据悉,该博文里解释了谷歌为缩小 Chrome 中不可见标签和窗口资源耗费所做的工作。谷歌方面称,该操作让 Chrome 的启动速度进步了 25.8%,解体次数缩小了 4.5%。
该“揭秘”博文还指出,谷歌公司多年来始终在钻研怎么更好地确定哪些 Chrome 窗口和选项卡对用户可见,以便可能适当地调配系统资源。
咱们晓得,不在焦点的选项卡(又称为“背景选项卡”)可升高 CPU 和 GPU 资源的优先级,但被遮挡的窗口(即关上的窗口,但齐全或局部被其余窗口笼罩的窗口)又如何呢?
对于这个问题,Bienvenu 在博文中写道,谷歌方面理解到“20% 的 Chrome 窗口齐全被其余窗口笼罩,也就是齐全被遮挡。如果这些被遮挡的窗口被视为背景标签,那么咱们的假如就将看到显著的性能劣势。”
于是,谷歌公司便对“Native Window Occlusion”(原生窗口遮挡)我的项目开展钻研,该我的项目将容许谷歌理解任何关上的 Chrome 窗口的遮挡状态。当然,要想弄明确这一点,他们还必须得晓得非 Chrome 浏览器窗口的地位,但这就不是 Windows 操作系统所能提供的信息了。
思考到多监视器设置和虚构桌面等因素,以上问题变得更加辣手。
为了解决该问题,谷歌提出了“occlusion calculation(遮挡计算)”计划,它能在 UI 的独自线程中运行,先计算用户的总可见区域,再从虚构桌面的可见区域中减去所有字作为“遮挡”的 Chrome 窗口,从前到后查看每个关上的窗口,最初再从总数中减去任意关上的窗口。
如果是 Chrome 窗口,则会查看其区域是否与未被遮挡的区域重叠;如果非 Chrome 窗口,就意味着 Chrome 窗口齐全被以前的窗口笼罩即遮挡。此时,软件会始终运行计算,直到所有的 Chrome 窗口都被标记为遮挡,这意味着剩下的局部必须对用户可见。有了这些信息之后,再向打算程序公布一个工作,以晋升浏览器窗口的可见性。
谷歌通过评估暗藏窗口进步 Chrome 性能
有了下面的解决方案,谷歌又提出了一个乏味的问题,“咱们心愿能多久运行一次计算?”
对于这个问题,Bienvenu 也在博文中做了解答。他示意,继续运行会升高性能,因而必须是选择性的运行。
好在 Windows 零碎容许应用程序跟踪挪动及调整关上窗口大小之类的事件,所以 Chrome 会连贯到这些告诉中,当用户挪动或调整窗口大小时,Chrome 会收回警报,并决定是否进行新的遮挡计算。
Bienvenu 博文中还指出,该计算是在 16ms 计时器上运行的,该计时器对应每秒显示 60 帧(FPS)的距离。
据理解,早在 2020 年 10 月谷歌就面向全副 Chrome 用户推出了这一计划。现在曾经过来了一段时间,谷歌也对外分享了以上“试验”的后果。其中包含:
- 启动速度放慢 8.5% 至 25.8%
- GPU 内存使用率升高 3.1%
- 整体绘制的渲染器帧缩小 20.4%
- 遇到渲染器解体的客户端缩小 4.5%
- 首次输出提早进步 3.0%
- 首次内容绘制和最大内容绘制速度进步 6.7%
能胜利做到下面这些,也是因为谷歌精确地意识到 Chrome 窗口何时被遮挡或齐全被其余窗口遮挡的问题。如果你也正在应用 Chrome 浏览器的话,当初就能够关上感受一下窗口启动的速度哦!