我们的年度回顾:我们如何在2020年使Firefox更快

2020-12-16 04:10:15

今年与我们任何人都经历过的不同。全球大流行影响了我们学习,与他人联系,工作,娱乐,购物等的方式。它直接或间接地影响了我们生活的方方面面。因此,普遍开放和可访问的Internet对我们的日常生活变得越来越重要。对于某些Firefox用户,访问Internet不仅重要,而且至关重要。

当Firefox团队调整为专注于功能和改进以帮助我们的用户过上基于互联网的生活时,性能计划加倍了我们的努力,以实现“为每个体验带来性能”的愿景。我们希望通过加快Firefox和Gecko的关键部分(如页面加载,JavaScript响应性和启动)的速度,并确保新功能发挥最佳性能,我们可以使新常态的痛苦减轻一些,而更多……正常。

考虑到这一点,我们想分享我们今年最引以为豪的工作,并重点介绍如何使每个版本的Firefox比上一个版本更快。自从今年以来我们取得了很多成就以来,我们将这些成就分为几个部分,这些部分与我们对工作的看法有关:

“性能文化”包括所有开发测试,指标,流程和其他工作的工作,以确保性能对于Firefox构建的所有内容都至关重要。

最后,“以正确的速度浏览”涵盖了在Mozilla生态系统之外提高Web性能的工作。

我们认为与浏览器和网页的交互应快速流畅。页面快速加载。网络反应灵敏。并且资源得到了周到的利用。这是我们期望所有Mozilla产品的基准性能。 2020年,我们改善了所有这些领域。

Firefox 75包括对惰性图像加载标准的支持。通过在需要时而不是在初始页面加载的关键路径上加载图像,此功能可以提高页面加载性能并减少数据。

Firefox 80添加了针对Flexbox回流的优化。在某些情况下,这可以将页面加载性能提高20%以上,并减少页面加载期间的布局偏移。

Firefox 82具有推测性JavaScript解析功能,允许浏览器在提取外部JavaScript脚本后就对其进行解析,即使它们从未执行过也是如此。此更改通常将页面加载量提高3-4%,但对于某些网站,可以将页面加载量提高67%以上。

Firefox 84增加了对链接预加载的支持,这使开发人员可以更好地控制资源加载,并且可以将页面加载提高10%以上。

8月发布的新版Android Firefox浏览器的页面加载速度比年初增加了20%,使其成为有史以来最快的Android Firefox浏览器。

Firefox 72对Firefox管理插件阻止列表的方式进行了更改,从而使启动和会话还原时间缩短了7%。

完成了Fast Shutdown项目的三个计划阶段的前两个阶段,从而使Firefox关闭速度提高了三倍。

Firefox 85 Nightly for Windows包括一个用于启动的新框架UI,这意味着Firefox启动的第一个迹象发生的时间是以前的10%。 Firefox感知性能的这种改进对于速度较慢的计算机上的用户特别有用。我们希望默认在2021年初发布这种新体验。

在启动时为about:home页面实现了一个缓存,从而将启动时Top Sites呈现的时间缩短了20%以上。

在需要时延迟加载Firefox UI的部分而不是自动加载,会导致浏览器窗口打开得更快。在Firefox 77和Firefox 80之间,一旦Firefox在Windows上的使用时间减少,打开新窗口的时间减少了大约10%。

启用WebRender后,Firefox 81可以在macOS上为60fps VP9视频提供更好的播放质量。

WebRender还包括用于着色器编译的优化,可将启动和会话还原时间缩短10%以上。

八月份发布的新版Firefox for Android打开了来自其他应用程序的链接,速度提高了25%。在某些设备上,这意味着它比旧版Android Firefox快60%。

与2019年6月发布的MVP相比,一般初创公司的进步并不大。虽然通常不是要庆祝的理由,但是在添加功能以将浏览器从MVP开发到旗舰Firefox的同时能够做到这一点Android上的浏览器是一个相当大的成就。

Firefox(Android版)还对用户界面关键部分的响应速度进行了许多改进,包括准确性和触摸滚动控制,降低的摇动抖动,键盘显示速度,键入时出现的文字以及菜单对用户输入的响应。

Firefox 83包括对MacOS的WebRender支持,并进一步改善了功耗,特别是在滚动或观看视频时。这项工作建立在2019年末发布的改进的基础上,并将macOS上的Firefox功耗降低了300%。

我们相信,为Mozilla产品做出贡献的每个人都有自己的表现。为了使所有人共享所有权,性能计划必须建立经过验证的测试,工具,指标和其他资源(例如,仪表板,文档)的基础,以使每个人都能够理解和影响浏览器的性能。在2020年,我们改进了测试基础架构,并增强了性能工具以衡量改进并诊断性能下降。

通过添加内存,网络,冷,热页面加载和实时页面加载的类别,改进了性能仪表板https://arewefastyet.com。还添加了WebRender和Fission变体的结果。

引入并改进了警长效率度量标准,用于测量警长分类和引发回归错误所需的时间。这些指标是9月提高绩效的时事通讯的重点。

增加了对在单个CI作业中的多个构建中以批处理模式运行性能测试的支持,从而在不影响覆盖范围的情况下更有效地利用了机器时间。

对Perfherder的一些改进,包括支持以批处理模式运行的测试提取结果,在比较视图中对结果进行排序的功能以及改进的错误模板。

在用于Android,Linux和macOS的持续集成(CI)管道中引入了用于页面负载测试的视觉指标,预计Windows将于今年年底发布。这项工作用流行的开源浏览器时间工具取代了我们专有的页面加载引擎。

完成了针对Firefox启动的新的基于视觉完整性的测试的第一个版本,以提供有关Firefox启动速度的更具用户代表性的视图。

引入了mach perftest,这是一种用于性能测试的现代框架,旨在简化运行和编写测试。所有新测试都将使用此框架,并且随着时间的推移,现有测试将迁移到该框架。一些团队已经利用了这个新的测试框架,包括QUIC和Fenix。

增强的mach perftest以支持网络限制,并将其用于我们的第一个用户旅程测试以比较http / 2和http / 3。

将冷页和热页合并加载到单个CI作业中,减少了总执行时间,同时增加了测试覆盖率。

用Firefox的新Profiler工具栏替换了Gecko Profiler附加组件,统一了台式机和远程移动配置文件的记录流(最终为Firefox工程师和Web开发人员)。

设置事件探查器也变得更加容易。一旦Profiler图标出现在工具栏中,开始/捕获快捷方式就将起作用。通过“工具->启用它Web Developer –不再需要启用Profiler菜单按钮”。

探查器的侧边栏可方便地汇总当前选择的堆栈/叶。我们看到它使我们的用户感到高兴,因此我们通过在“呼叫树”中将其默认设置为“打开”来使其更加突出。

现在,在Profiler时间轴中右键单击标记可提供与标记表和图形相同的上下文菜单;让您选择往返时间和复制数据。

媒体团队将第一个自定义预设添加到事件探查器,使贡献者可以快速访问具有所有必要线程和设置的录制媒体性能。

如果符号转换失败,则Profiler的元数据下拉列表现在提供了一个方便的按钮来重新触发该过程。

拖动配置文件以加载它们(以前只能在首页上使用)现在也可以在加载的配置文件上使用

Firefox Profiler对显示主线程I / O的FileIO标记的支持已得到扩展,可以显示主线程I / O的标记,甚至对未采样的线程也显示标记。

Firefox探查器已被Firefox工程师成功用于改善Firefox性能,现已可供Web开发人员使用。它取代了传统的“ Performance” devtools面板。使用Firefox devtools中的Firefox Profiler将显示配置文件,并以新视图集中在当前选项卡上。

Markers 2.0 –自助探查器标记:在Gecko中,您可以告诉您标记的外观,它会出现在Firefox Profiler前端中您想要的位置,而无需修补前端。

创建了一个新的信息中心,以更轻松地从Google Play商店评论和support.mozilla.org论坛等来源中识别与性能相关的用户反馈。

开发了用于观察分析的概念验证技术,该技术将性能指标的更改与用户行为指标相关联。

在台式机和移动设备上进行实验,以告知船舶决策并指导与启动,页面加载,链接预加载和Warp相关的性能优化。

作为改善真实用户指标的项目的一部分,开始了性能遥测的审计和差距分析。

添加了新的遥测技术,以更好地了解与速度较慢的启动,长时间运行的脚本和由此引起的浏览器挂起有关的性能和用户影响,移动性能,使用链接预加载时的页面加载性能,垃圾回收和JavaScript执行时间,以及更细粒度的页面加载指标。

向Background Hang Reporter添加了注释,以更好地了解Firefox UI中发生的挂起及其对用户的影响。

这意味着为网络建立正确的性能。在性能(“轻松”选择)和目标(“正确”选择)之间没有权衡。 Mozilla的独特定位是在对网络用户有利的方面和对网络构建者有利的方面之间取得平衡。这包括影响网络标准,并找到使每个人都更快的网络的方法(无论位置,收入或浏览器如何)。性能计划的成员还积极参加W3C Web性能工作组。

今年,为Google的Web Vitals提案的讨论和反馈做出了贡献。这包括对最大内容绘画(LCP)指标的内部分析,以及如何将其与现有性能指标(视觉指标和标准化Web性能API)进行比较,Mozilla在内部使用这些指标来测试台式机和移动设备的性能。我们的分析发现,虽然LCP是对某些先前页面加载指标的有希望的改进,但是当呈现时间不可用时,该指标的值会大大降低。这项工作为在2021年实现更完整的Web Vitals奠定了基础,并缩小了台式机和移动设备上的度量与性能分析功能之间的差距。

2020年底并不是Firefox性能工作的终点,而是标志着我们进步的里程碑。我们还有很多要做的事情。

在接下来的几个月中,我们将继续致力于提高浏览器关键区域的响应能力,例如长时间运行的脚本会导致挂起,站点内导航和启动。我们还将为2021年下半年与Firefox如何使用CPU,电池和网络带宽之类的资源奠定基础。改善页面加载的工作将继续进行,重点放在性能下降上,这会导致性能严重下降。同样,我们将继续努力发展整个Firefox组织的性能文化并影响更广泛网络的性能。

我们希望我们在2020年的工作可以使新常态对您的痛苦减轻一些。我们对2021年的目标是雄心勃勃的,因此我们邀请您加入我们的行列,以努力使正常生活变得越来越痛苦。至少在浏览网页时。