2、帧率稳定性评估指标:帧时间方差、百分位帧率(1% Low/0.1% Low)、帧时间直方图
帧率稳定性,说白了就是游戏画面能不能「一直」流畅。
很多人只看平均帧率,觉得跑到 60fps 就万事大吉。但实际体验呢?画面突然卡一下,或者过场动画掉帧,平均帧率根本看不出来。我早期做优化时也踩过这个坑——平均帧率 58fps,用户却投诉卡顿。后来才明白,平均帧率是骗人的。
真正决定体验的,是帧率的波动情况。这一章,我们就来聊聊三个核心评估指标:帧时间方差、百分位帧率(1% Low / 0.1% Low)和帧时间直方图。
2.1 帧时间方差:量化波动的数学工具
帧时间,就是渲染一帧所花的时间,单位通常是毫秒(ms)。比如 60fps 对应约 16.67ms。帧时间方差,衡量的是这些帧时间之间的离散程度。
公式很简单:
方差 = Σ(每个帧时间 - 平均帧时间)² / 帧数
方差越大,说明帧时间越不稳定,卡顿感越强。方差越小,说明每一帧的耗时都差不多,体验越平滑。
实际经验: 我在优化一款开放世界游戏时,发现平均帧率 55fps 看似合格,但帧时间方差高达 45ms²。玩家在跑图时频繁出现微卡顿。后来通过锁定 CPU 频率和优化渲染管线,将方差压到 8ms² 以下,卡顿投诉直接降了 70%。
不过,方差也有局限性。它只能告诉你「波动大不大」,但无法告诉你「卡顿有多严重」。这时候就需要百分位帧率了。
2.2 百分位帧率:1% Low 和 0.1% Low
百分位帧率,是业界公认的「卡顿检测器」。它不关心你跑得最快的时候有多快,只关心你跑得最慢的时候有多慢。
| 指标 | 含义 | 典型阈值 |
|---|---|---|
| 1% Low | 所有帧时间中,最慢的 1% 帧的平均帧率 | 不低于平均帧率的 60% |
| 0.1% Low | 所有帧时间中,最慢的 0.1% 帧的平均帧率 | 不低于平均帧率的 40% |
举个例子:你跑了一个测试,平均帧率 100fps,但 1% Low 只有 40fps。这意味着,在最糟糕的 1% 时间里,画面只有 40fps。这种卡顿,玩家会直接感受到。
我的习惯: 我一般同时看 1% Low 和 0.1% Low。1% Low 反映「频繁卡顿」,0.1% Low 反映「极端卡顿」。如果 0.1% Low 低于 20fps,那基本就是「幻灯片」体验了。
为什么会这样?因为人眼对帧率下降非常敏感。从 60fps 掉到 30fps,哪怕只有一瞬间,大脑也会觉得「卡了一下」。百分位帧率就是抓住这些瞬间的利器。
2.3 帧时间直方图:一眼看穿分布
方差和百分位帧率都是数值,但数值有时候不够直观。帧时间直方图,把每一帧的耗时画成柱状图,让你一眼看出帧时间的分布情况。
比如下面这张图(我手绘的 SVG 示意):
从这张图能看出什么?
- 绿色柱子(24ms~32ms):帧时间集中在 24~32ms,对应 31~41fps。这是主要分布区,说明大部分帧都在这个范围。
- 红色柱子(40ms 以上):有少量帧耗时超过 40ms,对应低于 25fps。这些就是卡顿点。
- 蓝色柱子(8ms~20ms):少数帧跑得很快,但数量很少,说明优化空间可能在于「拉高下限」而非「提升上限」。
避坑指南: 我曾经遇到一个项目,平均帧率 50fps,1% Low 也有 35fps,看起来不错。但帧时间直方图显示,有 5% 的帧耗时超过 50ms。这些帧虽然占比小,但每次出现都造成明显卡顿。后来发现是某个特效的异步加载导致的。直方图帮我找到了「少数坏帧」的根源。
2.4 三个指标怎么配合使用?
这三个指标不是孤立的。我一般这样用:
- 先看平均帧率:判断整体性能是否达标。
- 再看 1% Low 和 0.1% Low:判断卡顿的严重程度。
- 最后看帧时间直方图:定位卡顿的分布和原因。
举个例子:
| 场景 | 平均帧率 | 1% Low | 0.1% Low | 直方图特征 | 结论 |
|---|---|---|---|---|---|
| A | 60fps | 55fps | 50fps | 所有帧集中在 16~18ms | ✅ 优秀,无需优化 |
| B | 60fps | 30fps | 15fps | 大部分在 16ms,少量在 50ms+ | ⚠️ 偶发卡顿,需排查 |
| C | 45fps | 25fps | 10fps | 分布宽,从 20ms 到 80ms 都有 | ❌ 严重不稳定,需大改 |
我的建议: 在性能测试报告中,不要只贴一个平均帧率。把 1% Low、0.1% Low 和帧时间直方图一起放上去。这样开发人员一眼就能看出问题在哪。我自己做报告时,还会在直方图上标出「卡顿阈值线」(比如 33ms),方便对比。
2.5 小结
帧率稳定性评估,不是看一个数字就完事的。帧时间方差告诉你波动大小,百分位帧率告诉你卡顿有多严重,帧时间直方图告诉你卡顿长什么样。三个指标配合使用,才能全面掌握帧率稳定性。