谷歌 Chrome 开发者“揭秘”浏览器窗口遮挡问题:启动速度提升25.8%!

孔明
• 阅读 3229

近日,Chrome 开发者 David Bienvenu 在其名为《The Fast and the Curious》系列新博文中,详细“揭秘”了谷歌最近对 Chrome 浏览器所做的一些改进。其中,就包括了谷歌历时 3 年研究创建的 Native Window Occlusion(原生窗口遮挡)项目,可让浏览器启动速度提升 25%。

谷歌 Chrome 开发者“揭秘”浏览器窗口遮挡问题:启动速度提升25.8%!

据悉,该博文里解释了谷歌为减少 Chrome 中不可见标签和窗口资源消耗所做的工作。谷歌方面称,该操作让 Chrome 的启动速度提高了 25.8%,崩溃次数减少了 4.5%。

该“揭秘”博文还指出,谷歌公司多年来一直在研究怎么更好地确定哪些 Chrome 窗口和选项卡对用户可见,以便能够适当地分配系统资源。

我们知道,不在焦点的选项卡(又称为“背景选项卡”)可降低 CPU 和 GPU 资源的优先级,但被遮挡的窗口(即打开的窗口,但完全或部分被其他窗口覆盖的窗口)又如何呢?

对于这个问题,Bienvenu 在博文中写道,谷歌方面了解到“20% 的 Chrome 窗口完全被其他窗口覆盖,也就是完全被遮挡。如果这些被遮挡的窗口被视为背景标签,那么我们的假设就将看到显著的性能优势。”

于是,谷歌公司便对“Native Window Occlusion”(原生窗口遮挡)项目展开研究,该项目将允许谷歌了解任何打开的 Chrome 窗口的遮挡状态。当然,要想弄明白这一点,他们还必须得知道非 Chrome 浏览器窗口的位置,但这就不是 Windows 操作系统所能提供的信息了。

考虑到多监视器设置和虚拟桌面等因素,以上问题变得更加棘手。

为了解决该问题,谷歌提出了“occlusion calculation(遮挡计算)”方案,它能在 UI 的单独线程中运行,先计算用户的总可见区域,再从虚拟桌面的可见区域中减去所有字作为“遮挡”的 Chrome 窗口,从前到后检查每个打开的窗口,最后再从总数中减去任意打开的窗口。

谷歌 Chrome 开发者“揭秘”浏览器窗口遮挡问题:启动速度提升25.8%!

如果是 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浏览器的话,现在就可以打开感受一下窗口启动的速度哦!

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
HackBar破解(谷歌、火狐)
1.谷歌打开Chrome插件列表,查看Hackbar的插件ID:djmoeo……,在文件搜索里搜这段字符,我这里用的是Everything。!(https://img2018.cnblogs.com/blog/1392192/201907/139219220190701125726213948998123.png)Everyth
Stella981 Stella981
3年前
MetaMask安装使用指南
1.MetaMask(轻钱包)!MetaMask(https://oscimg.oschina.net/oscnet/710e5b6d849093e8ae7b5b6b4df96ef8466.png)MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器或
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Mac快捷键以及谷歌浏览器快捷键
分为通用快捷键和谷歌浏览器下快捷键,常用的已做加粗。1\.标签页和窗口快捷键⌘N打开新窗口。⌘T打开新标签页。⌘ShiftN在隐身模式下打开新窗口。按 ⌘O,然后选择文件。在Chrome浏览器中打开计算机中的文件。按住 ⌘ 的同时点击链接。或用鼠标中键(或鼠标滚轮)点击链接。从后台在新标签页
Stella981 Stella981
3年前
Chrome 87 新特性解读,多年来 Chrome 性能最大提升!
今天Chrome更新了87最新版,这是今年最后一次Chrome更新了,这个版本是多年来Chrome性能获得最大提升的一次,开发者工具也进行了大幅度更新。有用户认为,原本Chrome的性能问题诟病已久,然而在新Edge出来了以后,性能突然就提升了,这显然是谷歌方面受到了Edge市场份额暴增带来的压力。另外,在Mac上的
Stella981 Stella981
3年前
Html开发之Viewport的使用
     近年来随着移动端的快速发展,越来越多传统的web应用需要适配移动终端,下面记录一下如何通过viewport实现简单的不同型号的手机端的适配问题。不过在此之前,介绍一下如何通过Chrome浏览器,调试在移动终端上的效果。调试工具    首先我们打开chrome谷歌浏览器,输入天猫地址(实现了手机端适配),按F12进入开发者模式
Stella981 Stella981
3年前
Postman的安装
在网上下载一个Postman插件,1.首先用户点击谷歌浏览器右上角的自定义及控制按钮,在下拉框中选择工具选项,然后点击扩展程序来启动Chrome浏览器的扩展管理器页面。!打开Chrome扩展管理器(http://chromecj.com/Content/kindeditor/attached/image/20140926/201409262348
唐咨 唐咨
8个月前
131.0.6778.86版谷歌浏览器下载和对应的驱动
谷歌浏览器官方发布了131.0.6778.85/.86版谷歌浏览器下载,这是的第二个版本。最新版本的GoogleChrome(版本131.0.6778.86)已经解决了谷歌浏览器上周末导致某些网站上无法突出显示文本的问题。131.0.6778.86版谷歌浏