浏览器性能跑分

七项测完大约十几秒,覆盖排序、浮点运算、字符串、JSON、正则、对象分配和加密。每项都会空跑一次预热,再取三次里最好的一次。

开始之前

  • 关掉其他标签页和占 CPU 的程序,尤其是视频、直播和虚拟机的后台。
  • 确认没有开省电模式。省电模式会主动限制 CPU 频率,分数会低一大截。
  • 笔记本插着电源跑,电池供电时很多机型会降频。

点上面的「开始跑分」,结果会按项目列在这里。整个过程中页面会短暂卡顿,这是测试本身在占用主线程。

分数怎么算,为什么只能相对比较

每一项的做法是:先空跑一次预热,再连续跑三次并取最快的一次,用「操作数 ÷ 耗时」算出每秒操作数,最后除以参考机型上的经验值,乘以 100 得到分数。取最快而不是平均,是因为最慢的那次通常被系统调度打断了,把它算进去会让结果更像在测「后台有多吵」,而不是测设备本身。

参考值来自一台 2020 年前后的主流轻薄本,只用来把分数拉到 100 附近这个好读的刻度。它不是任何机构的基准,也不随硬件发展更新,所以「200 分」不代表这台设备比参考机型强一倍——真实差距要看同一时间、同一浏览器下的相对值。跨设备比较时,环境差异(温度、后台、电源模式)经常比硬件差异还大。

每项都返回校验值是有原因的。现代 JS 引擎会做死代码消除:如果一个循环只计算不输出,整段可能被直接优化掉,测出来的耗时接近 0。让每项返回一个依赖计算结果的数值,再在页面上消费它,才能保证引擎不敢省。这是所有跑分工具都要处理的问题,只是处理方式不同。

加密那项单独列出来,因为它走的是浏览器的 SubtleCrypto 接口。背后可能是原生实现,也可能有硬件加速,调用本身是异步的,测到的吞吐和 JS 引擎的计算能力是两条独立的线。把它混进 JS 项目的加权平均里会掩盖信息,所以它有自己的分数和权重。

想确认是不是显卡在拖后腿,用GPU 与 WebGL 能力检测;怀疑屏幕本身拖影严重,用屏幕拖影与响应测试;只是想知道打字快不快,去打字速度测试。

常见问题

这个分数能拿去和其他设备比吗?

只能看相对差距,不能当绝对性能。分数是相对参考机型的倍数,而参考值是一台具体设备上的经验值,不是行业标准。同一台机器换个浏览器,分数可能差出三成,因为 JIT 策略不同。想比较两台设备,用同一个浏览器、同一个版本、同样的后台状态各跑一次,才有意义。

为什么每次跑出来的分数不一样?

主要三个原因:CPU 温度升高后降频、后台程序抢 CPU、以及浏览器自己的优化状态。页面会显示三次运行的波动幅度,超过 30% 就说明这次结果不可信。想拿到稳定数字,跑之前关掉其他标签和占资源的程序,并且让设备冷却几分钟。

分数高就说明网页会更快吗?

不一定。真实网页的瓶颈更多在渲染、网络、DOM 操作和垃圾回收,纯计算只占一部分。一个跑分很高的设备,如果显卡驱动有问题,滚动照样会卡。分数适合用来判断「计算能力够不够」,不适合预测具体页面的体验。

为什么只有单线程的测试?

页面跑的是主线程上的 JavaScript,这也正是网页里绝大多数耗时代码所在的位置。Web Worker 能并行,但把任务拆到多线程后,测到的更多是调度开销,反而不好解释。想单独看多核表现,可以在控制台里用 Worker 自己写一个测试。

加密那一项为什么是异步的?

SHA-256 走的是浏览器的 SubtleCrypto 接口,它背后可能是原生实现,也可能有硬件加速,调用本身是异步的。这一项的分数反映的是「系统提供的加密吞吐」,和 JS 引擎的计算能力是两条线,所以单独列出来而不是混进前面几项。

手机跑分低,是不是手机不行?

手机 CPU 的持续性能受散热限制很大。刚开机跑和玩十分钟游戏再跑,差距能有 40%。另外移动浏览器为了省电会主动限制主线程频率,页面在后台时更明显。判断手机性能应该在室温、电量充足、没有边充边用的状态下测。

参考机型是什么?

参考值取的是一台 2020 年前后的主流轻薄本在 Chrome 上的经验成绩,只用于把耗时折算成「100 分左右」这个好读的刻度。它不是任何机构的基准,也不代表当前设备的真实市场定位,请不要把分数当成硬件评测结论。