FPS 测试:测量实际渲染帧率与帧时间稳定性
FPS 测试测量的是浏览器每秒真正渲染出多少帧,以及这些帧到来得是否均匀。平均帧率很高也可能藏着肉眼能感觉到的卡顿,所以本页同时给出帧时间分布、最慢 1% 帧与掉帧计数。三档渲染负载可以看出设备从哪里开始吃力。全部采样通过 requestAnimationFrame 在本地完成,数据不离开标签页。
FPS 测试测量当前浏览器标签页每秒实际渲染的帧数,不是显示器刷新率,也不是游戏内帧率。它采样 requestAnimationFrame 的帧间隔,输出当前/平均/最低/最高 FPS、1% low(最慢 1% 帧的平均帧率)以及超过中位帧时间 1.5 倍的帧数。60 Hz 对应约 16.7 ms 的帧预算;结果受 GPU、标签页可见性与后台负载影响。
- 定义
- 当前浏览器标签页每秒实际渲染完成的帧数
- 单位
- FPS;帧时间 ms = 1000 / FPS
- 采样
- requestAnimationFrame,300 帧环形缓冲,1 秒统计窗口
- 1% low
- 样本中最慢 1% 帧的平均帧率
- 掉帧判定
- 帧时间超过中位帧时间 1.5 倍,属本工具判定规则,非行业标准
- 参考帧预算
- 60 Hz ≈ 16.7 ms · 120 Hz ≈ 8.3 ms · 144 Hz ≈ 6.9 ms · 165 Hz ≈ 6.1 ms
- 上限
- 受屏幕刷新率与垂直同步约束,60 Hz 屏幕每秒最多呈现 60 帧
- 无法测量
- 游戏内帧率、GPU 占用率、显示器标称 Hz
- 数据
- 采样全部留在浏览器标签页内,不上传、不存储
FPS 测试到底测的是什么?
测的是渲染循环,不是面板。浏览器每次准备绘制一帧时 requestAnimationFrame 会触发,两次回调之间的间隔就是帧时间,用 1000 除以它得到该时刻的帧率。把这些间隔取平均,就是大多数计数器显示的 FPS;而分布才能说明输出是否稳定。两台设备都可能显示 60 FPS,一台每帧稳定在 16.7 ms,另一台在 8 ms 与 25 ms 之间来回跳 —— 后者平均值相同,却明显卡顿。
这和屏幕每秒重绘多少次是两个问题。要测量面板的 Hz,请用专门的刷新率工具;那个值属于硬件与链路属性,这里的数字描述的是当前标签页实际画出了多少帧。最终流畅度由两者中较低的一方决定。
为什么 1% low 比平均帧率更有参考价值?
最慢的 1% 帧正是卡顿所在:一次垃圾回收、一次纹理上传、一个后台标签页被唤醒。单帧 50 ms 几乎不会拉低一分钟的平均值,但你会清楚地看到一次顿挫。把这一小段的平均帧率与掉帧数一起展示,尖刺就藏不住了。本页把超过样本中位帧时间 1.5 倍的帧计为掉帧,这是本工具为突出离群值自定的阈值,不是标准跑分定义。
直方图也按这个思路读:约 20 ms 以下的柱画成绿色,更慢的画成红色。一连片绿柱代表渲染稳定;红柱按固定节奏出现,通常是后台任务在抢主线程,而不一定是显卡性能不足。
三档渲染负载会怎样改变结果?
轻、中、重三档只改变画布每帧绘制的运动图元数量,切换档位不会重置采样,因此可以直接观察数值随负载上升的变化。轻载主要反映浏览器自身开销;重载会给出足够多的绘制调用,较弱的核显与降频的笔记本开始赶不上帧预算,此时平均 FPS 下降,而 1% low 通常跌得更快。
测试时只保留一个可见标签页,关掉其他占用 GPU 的页面,每档至少跑十秒。电池供电、浏览器省电模式与显示缩放都会改变结果,因此更适合在同一台设备、同一条件下做前后对比,而不是拿别人的数字当基准。
各刷新率对应的帧预算
| 刷新率 | 帧预算 | 稳定渲染时的表现 |
|---|---|---|
| 60 Hz | 16.7 ms | 几乎全为绿柱,平均接近 60 FPS |
| 120 Hz | 8.3 ms | 紧密聚集在 8 ms 附近,加载后开始出现红柱 |
| 144 Hz | 6.9 ms | 余量很小,后台任务容易造成可见尖刺 |
| 165 Hz | 6.1 ms | 需要轻量页面与未降频的 GPU |
三步测量实际渲染帧率
- 打开干净标签页 — 关闭占用 GPU 的页面,保持本页可见,等待采样填满 300 帧窗口。
- 记录轻载基线 — 记下当前与平均 FPS、1% low,以及帧时间直方图中红柱的数量。
- 逐步加压 — 依次切到中载、重载,各等待十秒,比较 1% low 相对平均 FPS 的下跌速度。
常见问题
FPS 测试是做什么用的?+
测量浏览器标签页每秒渲染的帧数以及帧时间是否稳定,用于发现卡顿、在同一设备上对比不同渲染负载、检查页面是否守住帧预算,不能用来读取显示器规格。
什么是 1% low?+
样本中最慢 1% 帧的平均帧率。它能暴露被长期平均值掩盖的短暂停顿,通常比平均 FPS 更接近肉眼感受到的流畅度。
为什么实测帧率低于屏幕刷新率?+
可能是页面对当前 GPU 太重、浏览器在限制后台标签页,或设备处于省电模式。渲染还会与屏幕同步,因此刷新率只是上限而非保证值。
能测游戏帧率吗?+
不能。网页只能观察自己标签页内的画布渲染循环,游戏引擎、驱动与全屏独占渲染都在网页可见范围之外。
结果会上传或保存吗?+
不会。帧时间只存在内存中用于显示,离开页面即丢弃,没有账号、没有网络请求、不保留历史记录。