同一台 Mac,五个浏览器,五个分数
一台搭载 M4 Max 的 Mac Studio 在 Apple Store 跑我们的基准测试,拿到了 10,630。用来对比的那台 MacBook Pro——一颗更老的 M2 Max——在家里跑出过大约 12,900。更新、更大的芯片反而输了 18%,而那些显而易见的嫌疑(36 GB 内存对 96 GB,闲置的演示机对正在干活的开发机)一个也解释不了。
于是我们拿一台机器——还是那台 M2 Max,同一块显示器,同一个下午——跑了五个浏览器:
| Safari 26 | Edge 152 | Opera 131 | Firefox 156 | Chrome 151 | |
|---|---|---|---|---|---|
| 分数 | 11,443 | 11,713 | 12,801 | 6,275 | ~12,900 |
同样的芯片,同样的屏幕,最好和最差之间差了一倍。按场景看的数字比总分更离奇。我们的光线步进场景“液态金属”在 Safari 里稳住了 25,523 单位,在 Firefox 里只有 5,622——用的是同一块 GPU。Canvas 2D 圆形:Opera 64,476,Firefox 9,960。我们的 CPU 物理场景在 Safari 里比在任何 Chromium 浏览器里都快 29%,因为 JavaScriptCore 比 V8 更合那段代码的胃口。
而门店里的结果,原来是同一个故事换了一身行头。在 Safari 上,M2 Max 在光线步进场景里稳住 25,523 单位——门店里的 M4 Max 却只有 6,222,M5 Pro 更是只有 2,628。同样的浏览器,同样的场景,更新、更快的 GPU 却差了四到十倍。那个着色器里有一个 180 次迭代的循环,较新的 GPU 世代和 Metal 编译器的某种组合在它上面卡住了,老一代却没有。那个场景测的早已不是片段吞吐量,而是编译器的运气。
浏览器基准测试诚实地测量的是什么
这个网站给出的数字不是芯片评分,而是对你实际使用的整套技术栈的测量:芯片、驱动、着色器编译器、JavaScript 引擎、canvas 光栅化器、合成器。这是特性而非缺陷——这正是你打开网页时得到的性能——但这也意味着,比较时有两条规则很重要:
只在同一个浏览器里比较。 Safari 的分数和 Chrome 的分数,测的是恰好共用一颗芯片的两套不同技术栈。我们的最高得分榜早就在每一行标出浏览器;现在只要样本足够,结果页也会按浏览器显示同一硬件的中位数。
基准测试不应该放大技术栈的怪癖。 技术栈本身是测量的一部分,这很诚实。但一个场景仅仅因为编译器不喜欢某种循环写法就暴跌 10 倍,就说不过去了——那是基准测试本身太脆弱,该由我们来修。
基准测试 2.3.0 改了什么
光线步进器现在分小批次绘制。 液态金属不再用一个循环到 180 个采样的着色器,而是累加反复执行的四采样渲染轮次——采样位置相同,总工作量相同,算术一位不差。四次迭代的循环,正是每个引擎都能编译好的那类着色器;它能否把最新的 Apple GPU 拉回片段吞吐量应有的趋势上,要等下一次去门店才知道。Firefox 则纹丝不动——换上新着色器后依旧是 5,622——因为它的开销在每个采样要做的工作里,而不在外面那层循环上,要修它就得改动工作负载本身。
所有显示器共用一个持续预算。 真实的垂直同步时间戳比我们在 2.2.0 里采用的整齐模型要乱得多,而接固定刷新率显示器的机器,悄悄得到了比自适应同步笔记本宽松约 9% 的每帧持续预算。现在所有人都要满足同一个 17.5 毫秒的截尾均值。
冷启动不再产出垃圾数据。 在刚打开的浏览器里跑第一次,以前往往很惨:门店的一台演示 Mac 先跑出 77,几分钟后跑出 8,553;我们自己在家里最初几次用 Safari 跑,读数是 304 和 1,149,之后才出现 11,443。三项修复:基准测试现在会在花掉三分钟之前先检查你的机器是否正忙;在每个场景里等首次访问的着色器编译卡顿过去;如果机器已经安静下来,还会在测试结束时给什么都没测到的场景再一次机会。没有任何数字是编造的——重试只是第二次测量。
标记现在说的是实话。 如果一次测试里每个场景都测到了,但有一个档位没能连续三个窗口得到确认,过去整次测试就会被打到下限,完全进不了榜单。我们的生产数据显示,这类档位比稳定设备测得的结果低约 13%——这是吃力的硬件在如实表现,而不是有人在刷分——所以它们现在会带着标记发布,每个场景标记也会准确说明三种情况中发生的是哪一种。
结果也能随身带走了。 “复制链接”现在会把完整结果——分数、各场景负载、帧时间、标记——打包进链接本身。不上传任何东西;在任何地方打开,都会以只读方式显示。如果你哪天要测一台不属于你的电脑,再也不用对着屏幕拍照了。我们懂。我们拍过很多块屏幕。
2.3.0 的分数永远不会与旧版本混在一起,所以榜单从零开始。如果你想看测量原理的完整版——帧时间窗口、负载阶梯、哪些情况会让测试失效——方法说明页里都有。或者直接跑一次:大约三分钟,而且现在它会提前告诉你,你的机器是不是状态不佳。