浏览器 GPU 基准测试能测什么,又不能测什么
我们自己开发浏览器基准测试,所以不妨把这篇文章当作厂家主动印在包装上的副作用说明。浏览器 GPU 分数确实测量了真实存在的东西,但这个东西与 3DMark 测量的并不相同。假装两者一样,正是基准数字沦为玄学的开始。
这个数字实际包含什么
当我们的性能测试报告你的设备能以稳定帧率承载 600,000 个粒子时,这个数字是一整条链路共同作用的结果:
- GPU 芯片本身,这是显而易见的;
- 驱动程序,以及浏览器包在它外面的适配层;
- 浏览器合成器,它决定绘制的帧何时真正到达屏幕;
- JavaScript 及其垃圾回收器,尤其是在偏重 CPU 的场景中;
- 操作系统的电源管理器,它每秒都在决定设备可以使用多高的时钟频率;
- 散热条件——机身、风扇曲线,以及距离上一次测试过去了多久;
- 还有同时运行的一切:40 个标签页、视频会议,以及杀毒软件的午后扫描。
原生基准测试会有意绕过其中一些环节,以便隔离硬件性能。浏览器基准测试则保留整条链路,这既是缺点,也是价值所在。
什么时候不该看浏览器分数
跨系统给 GPU 排名。 同一张显卡在不同浏览器、驱动版本或操作系统下,分数可能出现有意义的差异,因为浏览器本身就是一层翻译:WebGL 调用会被转换成底层的原生图形 API,例如 macOS 上的 Metal、Windows 上的 Direct3D。如果你想知道两款 GPU 谁的纯硬件性能更强,应该阅读使用原生测试的专业评测;那才是合适的仪器。
预测游戏的绝对 FPS。 经过数周专项优化的游戏引擎,不会像浏览器画布一样工作。浏览器分数与游戏性能存在宽泛关联,却无法准确预报具体游戏帧率。
解读细小差距。 任何浏览器基准连续运行五次,都会自然出现几个百分点的波动。小于这个范围的差别只是噪声。我们会标记因温度而降速的测试,并允许你查看各场景结果,正是为了避免过度解读微小差距。
什么时候浏览器分数恰好最合适
测量网页实际能用到的性能。 如果你关心的是大型 Web 应用、Canvas 工具、地图和 WebGL 网站在一台设备上的体验,翻译层就不是测量误差,而是被测对象本身。原生基准看不到某次浏览器回归让真实网页性能减半;浏览器基准则正好运行在这条链路之中。
让自己的设备与自身比较。 同一设备、同一浏览器,在驱动更新、系统升级或可疑变慢的前后各测一次——这是浏览器基准最有价值的场景,因为除改动项以外,其余条件都保持不变。分数历史只保存在你的设备中,正是为了这种比较。
大规模比较同一链路。 同一个版本的工作负载积累上万次测试,再按 GPU 系列分组,就能得到真正有价值的中位数:例如 M 系列 MacBook 或中端 Android 手机在浏览器里通常能达到什么水平。我们的匿名样本会逐步形成这套数据,并且只有样本量达到门槛才会公开。
快速检查你不拥有的硬件。 无需安装、无需管理员权限,在待验的二手笔记本或管控严格的办公电脑上也能运行。能真正跑起来的测试,胜过无法安装的“更好”测试。(顺便参阅二手设备屏幕检查流程。)
我们怎样让数字保持诚实
完整细节见分数怎样计算,这里先概括基本原则:
- 测帧时间,不看 FPS 计数器。 我们在数秒窗口内评估帧时间的第 95 百分位数;把卡顿平均掉的基准测试,测到的只是营销数字。
- 固定帧预算。 无论显示器刷新率是多少,预算始终为 16.67 毫秒,因此 120Hz 笔记本不会因为屏幕更好而受罚。
- 工作负载版本化。 只要改变一个场景的绘制内容,基准版本就会升级,不同版本的分数永不互比。
- 明确标记降速,而不是混入平均。 如果设备在运行途中变慢(通常是过热),结果会直接说明,而不是悄悄把降频后的表现揉进一个数字。
- 不假装实验室。 这项分数就叫浏览器工作负载分数,因为它测量的正是这个。
怎样得到值得保留的数字
尽量关闭其他程序,接上电源,关闭省电模式,让设备先冷却,运行期间不要操作——后台负载和温度,是我们看到的两大波动来源。然后连续运行两次,更信任第二次;第一次往往承担了各种预热成本。