Announcing Speedometer 3.0: A Shared Browser Benchmark for Web Application Responsiveness
Speedometer 3.0 是由 Blink、Gecko 和 WebKit 三大主流浏览器引擎协作推出的最新浏览器基准测试,用于评估 Web 应用的响应性。自 2014 年 WebKit 团队发布 Speedometer 的初始版本以来,这一基准测试一直是推动浏览器引擎的性能优化的关键工具。Speedometer 3.0 引入了更精确的性能衡量方法和更具代表性的测试集,体现了现代 Web 的特性。
新的治理模型:Speedometer 3.0 是首个通过跨行业协作开发、由各大主流浏览器引擎共同支持的基准测试。开发采用了共识驱动的新治理模型,并设有开放供贡献的共享代码库。从 2022 年 12 月公布此项目以来,其开发涉及了大量的集体努力—讨论、研究、辩论、决策和数百个 PR(拉取请求)。
更广泛的用户体验测试范围:Speedometer 3 加入了许多新的测试,内容包括模拟在真实网页上的用户交互,例如渲染 canvas 和 SVG 图表(React Stockcharts、Chart.js、Perf Dashboard 和 Observable Plot)、代码编辑(CodeMirror)、所见即所得编辑(TipTap)和阅读新闻网站(Next.js 和 Nuxt.js)的测试。
此外,文章还提到改进了 TodoMVC 测试,根据 HTTP 存档数据更新了代码,以适应目前最流行框架的最常见版本。包括 Angular、Backbone、jQuery、Lit、Preact、React、React+Redux、Svelte 和 Vue;此外还有针对 ES5 和 ES6 的 JavaScript 原生实现以及 Web Components 版本。同时,增加了更复杂的测试版本,这些版本嵌入了一个更大的 DOM 树,并带有许多复杂的 CSS 规则,更接近于当今流行网络应用的页面权重和结构。
测试运行程序的改进:Speedometer 3 优化了测试运行程序,可以更全面地衡量浏览器对用户操作的响应,比如绘制和异步任务。Speedometer 2.0 测量了同步运行一个测试脚本的时间(即 "同步" 时间)以及任何在 0 秒计时器触发前的额外工作(即 "异步" 时间)。但这没有计入浏览器引擎更新网页渲染时所需完成的一些任务。
Speedometer 3.0 能够衡量这些之前遗漏的渲染工作,从而为优化现实世界内容创造更多机会。它通过在 requestAnimationFrame 回调中测量一个测试脚本来计算"同步"时间,并在第二个 requestAnimationFrame 触发的 0 秒计时器中计算"异步"时间。这种异步时间保证包含了测试本身的定时器工作以及浏览器引擎的页面渲染工作。这些改变极大地提高了基准测试的准确性,并因为引擎优化了这些之前遗漏的工作,导致用户在现实世界中的体验提高。
此外,文章提到还有更多幕后的改进,包括改善了开发者工具以便浏览器工程师更好地理解结果、分析和自定义测试。测试运行程序架构也经过重新设计,使得撰写和维护复杂测试案例变得更容易,并做了许多代码质量的提升,并迁移至 Speedometer 2.0 发布时尚不广泛使用的现代特性,例如原生 promises、async / await、classes 和 modules。
Speedometer 3 的主要目标是尽可能反映真实世界中的 Web,从而使用户在浏览器在基准测试中的得分提高时受益。在公开发布之前,它已经取得了一些成果,主要引擎在过去一年中的核心优化转化为了用户在 Web 上的响应性提升。