WOOFY · 游玩实验室
FPS 相同,帧节奏不同
FPS 计数器概括的是速率,并不告诉你每一帧何时到来。通过这些刻意简化的序列,了解哪些问题可以用汇总数据回答,哪些需要查看时间线。
用同一组数据回答不同的问题为什么两个 FPS 数值不能总是直接取平均
设想两个完整间隔:10 ms 和 30 ms。它们合计占用 40 ms。应在这段总时间内计算这两个间隔。
整体速率为 1000 × 2 ÷ 40 = 50 FPS。10 ms 间隔的倒数换算成速率为 100 FPS,30 ms 间隔则约为 33.33 FPS。
将 100 和 33.33 取平均,得到约 66.67,但这不是整体速率。较慢的间隔占用了三倍的时间。请把间隔数与总时长一起考虑;合并不同时长的记录时也会遇到同样的陷阱。
三组序列,总时长相同
每组序列包含 1000 个完整帧间隔,总时长为 10000 ms。间隔指相邻两次帧事件之间的时间。这里,平均 FPS = 1000 × 间隔数量 ÷ 总毫秒数。这些是合成间隔,不涉及采集边界或缺失记录。
横向位置表示间隔的先后顺序,并非已经过的时间。纵向高度表示时长,范围为 0 至 120 ms。下方文字与数字描述的是同一组数据。
间隔均匀
每个间隔都是 10 ms,均未超过 60 FPS 对应的参考时间预算,约 16.67 ms。
- 平均 FPS
- 100
- P99 间隔(ms)
- 10
- 最长间隔(ms)
- 10
- 超过预算的间隔数
- 0
- 超过预算的间隔占比(%)
- 0
- 这些间隔占总时长的比例(%)
- 0
- 超过预算的最长连续组
- 0
- 参考时间预算(ms)
- 16.67
十段分散的长间隔
每一百个间隔中的最后一个长 109 ms,其余 990 个都是 9 ms。长间隔彼此分开。平均值仍为 100 FPS,但 P99 只有 9 ms。
- 平均 FPS
- 100
- P99 间隔(ms)
- 9
- 最长间隔(ms)
- 109
- 超过预算的间隔数
- 10
- 超过预算的间隔占比(%)
- 1
- 这些间隔占总时长的比例(%)
- 10.9
- 超过预算的最长连续组
- 1
- 参考时间预算(ms)
- 16.67
十段连续的长间隔
同样的十个 109 ms 间隔现在连续出现在末尾。汇总数值与长间隔分散时相同,但超过参考时间预算的最长连续组从一个间隔增长为十个。
- 平均 FPS
- 100
- P99 间隔(ms)
- 9
- 最长间隔(ms)
- 109
- 超过预算的间隔数
- 10
- 超过预算的间隔占比(%)
- 1
- 这些间隔占总时长的比例(%)
- 10.9
- 超过预算的最长连续组
- 10
- 参考时间预算(ms)
- 16.67
为什么 P99 可能遗漏最长的间隔
本实验室将间隔从短到长排序,然后取从一开始计数的第 ceil(0.99 × N) 项。对于 1000 个间隔,该位置是第 990 项。在两组不均匀序列中,前 990 个值都是 9 ms,全部十个 109 ms 长间隔都位于该位置之后。因此,这里的 P99 更低,并不能证明体验更稳定。其他工具可能采用不同的百分位数计算方法。
P99 并不是通用的“1% low FPS”定义
百分位边界与最慢间隔的平均值是两种不同的计算。“1% low”这一名称不足以确定公式。对比结果前,请核对工具的定义、采集指标和版本。本实验室以毫秒报告 P99,不将其倒数称为 1% low。
用同一组数据回答不同的问题
选择一组序列和一个参考帧率。时间预算为 1000 ÷ 参考 FPS:30 对应 33.33 ms,60 对应 16.67 ms,120 对应 8.33 ms。更改参考值只会重新分类间隔,不会改变序列,也不会模拟 FPS 限制器。
上方三个示例均以 60 FPS 为参考。即使不使用交互控件,也可以阅读其数据、解释和计算方法。
请选择列表中的序列和参考帧率,然后重试。
你选择的对比
十段分散的长间隔 · 60 FPS
- 平均 FPS
- 100
- P99 间隔(ms)
- 9
- 最长间隔(ms)
- 109
- 超过预算的间隔数
- 10
- 超过预算的间隔占比(%)
- 1
- 这些间隔占总时长的比例(%)
- 10.9
- 超过预算的最长连续组
- 1
- 参考时间预算(ms)
- 16.67
仅统计严格长于参考时间预算的间隔。等于预算的间隔仍在预算内。
时间占比累加每个被计入间隔的完整时长,而不是只累加超出预算的部分。它不是卡顿评分,也不是输入延迟测量。连续组描述相邻的间隔,并不能证明发生了可感知的卡顿事件。
让设置改动成为公平的对比
请使用你的采集工具进行实际测量。本实验室不会读取硬件信息,也不会导入采集文件。在认定某项设置有帮助之前,请记录以下内容。
明确一个问题
例如:改变一项图形设置,能否减少同一路线上反复出现的长间隔?保持游戏版本、场景、分辨率、帧率上限、同步方式及其他设置不变。记录所有例外。
采集可比较的运行记录
每次采用一致的预热流程,并使用相同路线和记录时长。重复测试每种条件,在可行时交替测试顺序。将首次运行时的加载或着色器处理与预热后的测试分开;不要在未记录原因的情况下删除不利于结论的尖峰。
结合时间线阅读汇总数据
对比平均速率、分布尾部数值、最长间隔,以及长间隔出现的位置。如果重复运行的结果大量重叠,应将结论标为不明确,而不是挑选最好的一次。平均值不变,也可能伴随有用的节奏改善。
说明结论的适用范围
写明更改的设置、固定条件、重复运行结果和剩余不确定性。应用提交帧的时间间隔、实际显示的帧和生成的帧可能不同。请比较同一种指标,不要仅凭这些数字推断输入延迟或 CPU/GPU 故障。
从结果表得出有依据的结论
每个案例回答不同的问题:优势是否重复出现、所选指标是否改善、记录是否正确合并?先阅读观察结果,再判断它们能支持什么结论。
以下记录都是由完整间隔构造的教学数据,并非真实的性能测试采集记录。A 和 B 只是标签,不代表推荐设置。这些示例不规定最低重复次数,也不提供统计显著性判定规则。
最佳单次记录似乎有赢家,完整记录却不支持这一结论
在这个构造的案例中,A 和 B 在同一路线上交替进行,每次 60 秒,采集指标、预热、分辨率及其他条件均相同。问题是:B 在这三组对比中是否表现出可重复的平均速率优势。
| 重复对比组 | A · 平均 FPS | B · 平均 FPS | B 减 A(FPS) |
|---|---|---|---|
| 1 | 100 | 103 | 3 |
| 2 | 102 | 99 | -3 |
| 3 | 101 | 101 | 0 |
A
- 完整时长内的整体 FPS
- 101
- 各记录平均 FPS 中的最低值
- 100
- 各记录平均 FPS 中的最高值
- 102
B
- 完整时长内的整体 FPS
- 101
- 各记录平均 FPS 中的最低值
- 99
- 各记录平均 FPS 中的最高值
- 103
只选最高结果,会得到 A 为 102、B 为 103 FPS。保留所有等时长记录,两者的整体速率均为 101 FPS。各组差值为 +3、−3 和 0 FPS:方向发生了变化。
- 可以得出的结论
这组数据未显示 B 具有稳定的平均 FPS 优势,也不能证明两个设置等效;少量构造样本不足以确定这一结论。
- 接下来应检查什么
重复可比较的观察,并结合采集条件分析差异。保留所有有效记录,说明排除记录的理由。如果重复顺序或后台任务可能解释某个结果,应先改进对比,再选择赢家。
- 结论的适用边界
取值范围重叠是一种描述,不是显著性检验。最佳单次记录和固定重复次数都不是通用的决策规则。
平均值改善,长间隔指标却变差
两份构造记录均持续十秒。A 包含 980 个 10 ms 间隔及十个 20 ms 间隔。B 包含 1180 个 8 ms 间隔及二十个 28 ms 间隔。两者都采用相同的 60 FPS 参考值,即约 16.67 ms。
A
- 时长(s)
- 10
- 完整间隔数
- 990
- 平均 FPS
- 99
- 长于 60 FPS 参考间隔的间隔
- 10
- 这些间隔所占时间比例(%)
- 2
B
- 时长(s)
- 10
- 完整间隔数
- 1,200
- 平均 FPS
- 120
- 长于 60 FPS 参考间隔的间隔
- 20
- 这些间隔所占时间比例(%)
- 5.6
A 合计 990 个间隔,B 为 1200 个,对应 99 与 120 FPS。被计入的长间隔在 A 中占用 200 ms,在 B 中占用 560 ms,即总时间的 2% 与 5.6%。这些百分比描述的是时间,而不是间隔数量占比。
- 可以得出的结论
本例中 B 的平均速率较高,但有更多时间落在长于所选参考值的间隔里。这些数字说明指标之间存在取舍,不能确定谁的整体流畅度更好。
- 接下来应检查什么
明确你的实际问题是平均速率、反复出现的长间隔,还是其他测量结果。在保留某个设置前,比较同一场景的重复记录,并检查长间隔出现在什么位置。
- 结论的适用边界
一组 A/B 记录不能确定可重复的效果。阈值只是选定的参考值;本例既不测量感受,也不测量输入延迟,更不能确定长间隔的成因。
记录时长不同,可能让简单排名反转
A 合并十秒的 120 FPS 记录与九十秒的 60 FPS 记录。B 合并两份各五十秒、80 FPS 的记录。因此,每个标签都覆盖 100 秒。A 的记录时长不同,B 的则相同。
| 记录 | 时长(s) | 完整间隔数 | 平均 FPS |
|---|---|---|---|
| A1 | 10 | 1,200 | 120 |
| B1 | 50 | 4,000 | 80 |
| A2 | 90 | 5,400 | 60 |
| B2 | 50 | 4,000 | 80 |
A
- 完整时长内的整体 FPS
- 66
- 各记录 FPS 的算术平均值
- 90
B
- 完整时长内的整体 FPS
- 80
- 各记录 FPS 的算术平均值
- 80
A 包含 1200 + 5400 = 6600 个间隔,即 100 秒内 66 FPS。B 包含 4000 + 4000 = 8000 个间隔,即 80 FPS。对 A 显示的两个 FPS 数值取平均会得到 90;若把它当作整体速率,就会错误地将 A 排在 B 前面。
- 可以得出的结论
按完整时长计算,这些构造数据给出 A 为 66、B 为 80 FPS。得出 90 FPS 的简化方法,给时长相差很大的记录分配了相同权重。
- 接下来应检查什么
如果问题是整体速率,应合并间隔数和时长。比较设置效果时,还应匹配场景构成、预热过程和采集指标;正确的算术无法弥补不一致的条件。
- 结论的适用边界
逐份记录的 FPS 平均值回答的是另一个问题,本身并非无效。但不能把它改称为整体速率。单凭这些汇总值,不能说明改善是由 B 导致的。
改变汇总方式,保留原始记录
用相同的构造数据,比较完整时长计算与各案例中的简化方法。改变的只有汇总方式,记录及其条件保持不变。
请选择列表中的案例和汇总方法,然后重试。
所选汇总结果
选择记录 · 使用完整时长
- A · 平均 FPS
- 101
- B · 平均 FPS
- 101
- B 减 A(FPS)
- 0
保留全部六份等时长记录。A 和 B 的整体速率均为 101 FPS。汇总值相同,并不能证明性能等效或帧间时间分布完全一致。
只选每个标签下结果最高的一份记录:A 为 102、B 为 103 FPS。这会丢弃其他有效观察,不能作为优势重复出现的证据。
总间隔数除以总时间,得到 A 为 66、B 为 80 FPS。这回答了整体速率的问题,但不能证明场景可比,也不能确定设置的因果效果。
此方法对各记录的 FPS 取平均,不按时长加权:A 为 90,B 为 80。这是另一种汇总方式,若称其为整体速率就会产生误导。
有用的结论也可以保留不确定性
这些数据支持“两组示例的平均值都是 100 FPS,但间隔分布模式不同”,却不支持“这台电脑玩起来一定流畅”。测试你自己的设置时,应先检查重复且可比较的测量结果,以及你想改善的体验,再决定是否保留设置。
这个练习无法告诉你什么
这些序列演示的是算术,而非人的感知。它们不涵盖显示器刷新行为、可变刷新率、帧生成、输入延迟、网络延迟或长间隔的成因。参考时间预算是一条人为选定的对比线,并非通用的好坏分界。这些示例不构成对任何游戏、硬件购买或维修的建议。