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 示意):

帧时间直方图示例 8ms 12ms 16ms 20ms 24ms 28ms 32ms 36ms 40ms 44ms 100 0 理想区(≤16.67ms) 警告区(16.67~33ms) 卡顿区(>33ms)

从这张图能看出什么?

  • 绿色柱子(24ms~32ms):帧时间集中在 24~32ms,对应 31~41fps。这是主要分布区,说明大部分帧都在这个范围。
  • 红色柱子(40ms 以上):有少量帧耗时超过 40ms,对应低于 25fps。这些就是卡顿点。
  • 蓝色柱子(8ms~20ms):少数帧跑得很快,但数量很少,说明优化空间可能在于「拉高下限」而非「提升上限」。

避坑指南: 我曾经遇到一个项目,平均帧率 50fps,1% Low 也有 35fps,看起来不错。但帧时间直方图显示,有 5% 的帧耗时超过 50ms。这些帧虽然占比小,但每次出现都造成明显卡顿。后来发现是某个特效的异步加载导致的。直方图帮我找到了「少数坏帧」的根源。

2.4 三个指标怎么配合使用?

这三个指标不是孤立的。我一般这样用:

  1. 先看平均帧率:判断整体性能是否达标。
  2. 再看 1% Low 和 0.1% Low:判断卡顿的严重程度。
  3. 最后看帧时间直方图:定位卡顿的分布和原因。

举个例子:

场景 平均帧率 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 小结

帧率稳定性评估,不是看一个数字就完事的。帧时间方差告诉你波动大小,百分位帧率告诉你卡顿有多严重,帧时间直方图告诉你卡顿长什么样。三个指标配合使用,才能全面掌握帧率稳定性。