为什么不同浏览器的跑分不一样?如何公平比较 Chrome、Safari、Edge 和 Firefox

从 JavaScript 引擎、WebGPU、安全策略和扩展程序几个方面,说明同一台设备换用不同浏览器后网页跑分为何会变化,并介绍如何用 Web Bench 的浏览器对决进行公平比较。

你在同一台笔记本电脑上,保持相同的供电状态,间隔几分钟运行了同一个基准测试。结果 Chrome 的分数比 Safari 高,或者正好相反。在怪罪机器或测试之前,请先了解:这很正常。网页跑分测量的并不是裸硬件,而是你的硬件通过浏览器所能发挥出的表现,而每个浏览器都以略有不同的方式处于代码与芯片之间。本文将解释 Chrome、Safari、Edge 和 Firefox 的分数为什么会不同,以及如何用 Web Bench 的浏览器对决功能,在同一台设备上公平地比较浏览器。

原生基准测试可以靠近操作系统运行,把硬件推到接近极限。而网页基准测试只能通过 JavaScript、WebAssembly、Canvas 和 WebGPU 等浏览器 API 来访问设备。从代码到 CPU 的路上,浏览器的引擎、图形层和安全策略都要参与。因此,同样的硬件,用不同的浏览器打开页面,得到的数字也会不同,这是预期中的现象,而不是 bug。

这并不全是缺点。文档编辑、视频通话、设计工具和游戏都已搬进浏览器,所以浏览器内的性能更接近你实际感受到的体验。“我的设备有多快?”和“我的浏览器在我的设备上跑得有多好?”是两个不同的问题,而网页跑分回答的是后者。

正因如此,读分数时必须结合产生它的浏览器。Web Bench 会在每个结果上显示类似“快速测试 · 12 项测试 · WebGPU · Chrome 142”的一行,包括测试模式、测试数量、图形路径,以及浏览器系列及其主版本号。它只读取系列和主版本号,原始的 User-Agent 字符串绝不会被保存或发送到任何地方。

原因一:JavaScript 引擎

每个浏览器都内置了 JavaScript 引擎。众所周知,Chrome 和 Edge 使用 V8,Safari 使用 JavaScriptCore,Firefox 使用 SpiderMonkey。它们都是先轻量地解释执行代码,再把常用的部分分阶段编译成更快的机器码,但对于优化什么、何时优化、优化到什么程度,各个引擎的决策并不相同。

结果就是,随着工作类型不同,胜者也可能变化。字符串处理、JSON 解析、排序、数值循环,以及会创建大量对象的代码,各自暴露出不同的强弱。垃圾回收,也就是清理内存的方式,同样各不相同,在内存占用多的任务中可能会拉大差距。这正是没有哪个浏览器永远最快的原因。引擎每次发布都在变化,所以去年看到的规律,今年未必成立。

操作系统也有影响。在 iPhone 和 iPad 上,浏览器长期以来都是基于与 Safari 相同的 WebKit 引擎构建的,所以在 iOS 上点按 Chrome 图标,得到的并不是与电脑上 Chrome 相同的引擎。相关政策可能因地区和系统版本而异,请以结果卡片上显示的浏览器名称和引擎信息为准,而不是凭想当然。

原因二:WebGPU、WebGL 与图形后端

GPU 分数往往是浏览器差异最明显的地方。Web Bench 会先尝试 WebGPU,当 WebGPU 不可用时,仅图形测试会回退到 WebGL2。WebGPU 的支持情况会随浏览器、操作系统和驱动不断变化。如果一个浏览器走的是 WebGPU,另一个走的是 WebGL2,这两个分数就不应该放在同一行里排名。

浏览器还建立在操作系统的图形 API 之上,它们选择的后端可能取决于环境。即使是同一块 GPU,驱动和后端不同,着色器的编译方式和运行速度也会不同。计算测试需要 WebGPU,而 f16 矩阵乘法只有在支持 shader-f16 功能时才会运行。因此,同一块 GPU 上的两个浏览器,最终运行的测试数量可能不同。

  • 不支持的测试会被视为排除而不是错误,结果页面会说明原因。
  • 如果图形路径不同(WebGPU 与 WebGL2),GPU 分数只能当作粗略的参考。
  • 如果关闭了硬件加速,GPU 分数可能大幅下降,所以请先检查这项设置。
  • 如果你的浏览器支持 WebGPU 但被关闭了,请到设置中看看能否启用。

原因三:安全策略、隔离与计时器

为了防御 Spectre 系列等 CPU 推测执行攻击,浏览器限制了精确计时和内存共享。其中有两项措施广为人知:一是有意降低计时器的精度;二是只在跨源隔离的页面上才允许使用 SharedArrayBuffer 这类由多个 Worker 共享内存的功能。

各个浏览器的实现和默认设置并不相同。计时器较粗时,短任务的时间更难准确测量,测量噪声随之增大。没有隔离的话,多核测试中 Worker 之间的协作方式也可能改变。这也是 Web Bench 提醒 CPU 多核结果取决于浏览器所用的 Worker 数量及其同步方式、不应直接换算成物理核心数的原因。

因此,浏览器对决中的环境比较会包含跨源隔离与同步方式、所用的 Worker 数量,以及测得的最小计时器间隔(单位为微秒)。当两个数字不同时,这几行可以帮助你判断,是其中一个浏览器真的更慢,还是两者只是计时的精度不同。

扩展程序、标签页与电源状态

和引擎、策略一样常见的,是你使用每个浏览器的方式。你每天使用的浏览器,很可能装有广告拦截器、翻译工具和密码管理器,还开着几十个标签页;而很少用的那个则很干净。如果就这样直接比较,你测到的是扩展程序和标签页的差异,而不是引擎的差异。

  • 扩展程序:向每个页面注入脚本,或在后台占用 CPU 的扩展,会降低分数并增大波动。隐私窗口通常默认禁用扩展,因此可以作为很有用的基准,不过其中存储等部分功能可能受限。
  • 打开的标签页与后台任务:其他标签页中的视频播放、下载和同步会与测试争用 CPU 和内存。开始前请关闭它们,测试进行时也不要把测试标签页隐藏。隐藏会丢弃正在进行的那一轮,回来后会重新测量。
  • 电源与发热:笔记本电脑的性能上限取决于是否接通电源以及电源模式。如果第一个浏览器测完后机器还很烫,第二个浏览器的分数就会偏低。
  • 浏览器设置:硬件加速、节能或省电模式以及隐私设置,都可能改变结果。

如何使用 Web Bench 的浏览器对决

Web Bench 有一项浏览器对决功能,无需服务器,只用一个分享链接就能并排比较两个浏览器。请按以下顺序操作。

  1. 在第一个浏览器中完成一次测试并创建分享链接。分享面板会提示:在其他浏览器中打开该链接并运行测试,即可并排比较。
  2. 在同一设备的另一个浏览器中打开该链接。链接里带有第一次的结果,所以不需要账号,也不需要服务器存储。
  3. 在分享的结果页面上,按下“用此浏览器测试并比较”按钮。测试界面上方会出现类似“比较对象:Chrome · ____ 分”的横幅,测试模式也会被锁定为与之一致。若要更改,会出现警告。
  4. 测试结束后会出现浏览器对决卡片。它用两列显示综合分数和各类别分数、以百分比表示的差距、每个类别的胜者,以及一句话的整体总结。
  5. 向下滚动到详细比较表,可以查看每项测试的数值;在浏览器环境表中,可以查看引擎、图形路径、隔离和计时器的细节。

两列的标题会同时显示角色和浏览器,例如“分享的结果 · Chrome 155”和“此浏览器 · Safari 18”。如果两个浏览器名称相同,则改为标注“此浏览器”和“分享的结果”。对决的结果也可以分享,这个链接会连同另一方的结果一起带上。如果链接会变得过长,就会舍弃每项测试的详情,只保留类别分数,并通知你。

解读结果:先看误差范围,再看胜者

对决卡片会显示每个类别中哪一方更高,但首先要确认的是差距有多大。Web Bench 把在正负 3% 以内的差异视为“基本相同”。这种情况下,总结不会宣布胜者,吉祥物也会露出思考的表情。大笑代表获胜、流泪代表落败,这样的表情只用于差距足够大、下次运行时不会反转的情况。

详细表格的标准更严格。每项测试取三次运行的中位数,并记录它们之间的离散程度,计算方式为最大值除以最小值再减一。如果差异落在两个浏览器离散程度之和以内(下限为正负 3%),就会以灰色显示为“无差异(误差范围内)”。延迟这类越低越好的指标,则按相反方向解读。总结语句会统计各类别的胜者,例如指出哪个浏览器在 JavaScript 和数据处理方面领先,哪个在图形和存储方面领先,同时也会告诉你有多少项落在误差范围内。

也不要忽视警告。如果整理后的设备名称(芯片或 GPU)或核心数不同,你会看到一条警告,提示结果可能来自不同的设备,这样的比较并不公平。如果正式版本不同,则会给出提示说明,而不是进行数值比较。在这些情况下,不要用这个结果来评判浏览器。

搭建公平的比较环境

比较浏览器,就是只保留浏览器这一个变量,其余的一切都必须保持一致。这份清单能让你的结果可靠得多。

  1. 在同一台设备、同一个操作系统账号下测试。确认对决卡片没有提示设备名称或核心数不同的警告。
  2. 把两个浏览器都更新到最新的稳定版。版本相差太大的话,仅引擎的改进就可能改变结果。
  3. 使用相同的测试模式,如快速或标准。对决模式会自动为你锁定。
  4. 关闭扩展程序或使用隐私窗口,并且对两个浏览器一视同仁。
  5. 关闭其他应用和标签页,暂停下载、视频和云同步。
  6. 笔记本电脑要接上充电器并保持相同的电源模式。测完一个浏览器后,等机器冷却下来再开始下一个。
  7. 如果可以,把这一对浏览器按相反的顺序再测一遍,因为顺序可能影响结果。
  8. 每个浏览器重复两三次,查看波动范围。

也要检查图形路径。如果一个浏览器运行的是 WebGPU,另一个是 WebGL2,请避免直接比较 GPU 项目,而是借助环境表中的图形路径一行来解释差距。如果你包含了 AI 推理,两次运行也应使用相同的路径(WebGPU 或 WASM),才算条件相同。

根据你的实际使用选择浏览器

拿到结果后,先想想哪个类别与你的日常工作对应,再去看哪个浏览器赢了。分数最高的浏览器,不一定最适合你。

  • 如果你主要编辑文档、聊天和网购,CPU 单核和浏览器的结果最重要。如果这些差距都在误差范围内,就根据同步、扩展支持和隐私设置等其他因素来选择,而不是看速度。
  • 如果你要做网页版图像或视频编辑、数据处理这类重度工作,请关注 CPU 多核、内存和存储的结果。
  • 如果你使用 3D 地图、网页游戏、特效丰富的网站或浏览器内的 AI 功能,GPU 图形、GPU 计算和 WebGPU 支持最为重要。
  • 如果你最看重续航,请记住功耗与分数同样重要。Web Bench 不会直接显示能效,所以请另外确认实际的电池使用时间。
  • 如果你所在的学校或单位对你需要的某项服务只正式支持一个浏览器,那么不论分数如何,都应以该浏览器为先。

最后,浏览器之间的差异会随着更新而变化。不要根据几个月前的结果来做今天的决定,在浏览器大版本更新之后或更换设备时,请再运行一次对决。每个分数都是取决于环境的参考值,不应据此得出某个浏览器永远更好的结论。

在 Web Bench 中开始测试

注:本文介绍的是 Web Bench 当前的功能。分数是会随设备、浏览器和条件而变化的参考值。结果不会发送到服务器,而是包含在分享链接中传递。

← 指南