测量与测试
回报率和报告间隔
手柄以报告的形式向电脑告知自身状态,每秒多次。报告的频率就是回报率,单位为赫兹:1,000 Hz 即每毫秒一个报告,250 Hz 即每 4 ms 一个。在 PadBench 能统计回报率的情况下,手柄图下方的“回报率”卡片会显示它,以及报告到来的均匀程度。
回报率
卡片显示最新的回报率,以及手柄连接以来的最高值:最高值取手柄连续两次读数都保持的回报率,因此仅在一秒内突然升高的计数不会被当作最高值,而且最高值从不低于最新值。如果这个数值统计的不是手柄发送的每一个报告,旁边会有简短的文字说明。
回报率不会被标为好或坏。这个数值反映的是手柄的实际表现,可用来与厂商宣称的数值对照。
每个报告
通过 Chrome 和 Edge 中的 WebHID 以及在 Windows 应用中,PadBench 能看到手柄发送的每一个报告,因此这个数值统计的是全部报告,即手柄真实的回报率。应用每秒最多读取 8,000 个报告。
状态变化,而非报告
Windows 应用通过 XInput 读取 Xbox 手柄,而 XInput 只在手柄状态发生变化时才传递其状态,因此这个数值统计的是变化次数:手柄静止时,无论它报告得多频繁,读数都很低。所以卡片会请你转动摇杆:转动中的摇杆在每个报告中都会变化,这时数值及其最高值就会达到手柄的回报率,上限为应用读取 XInput 的频率,即每秒 1,000 次。
受浏览器读取频率限制
数值旁的“受浏览器读取频率限制”表示,它统计的是浏览器传递手柄状态的频率,而不是手柄发送的每一个报告,因此不会超过浏览器自身的节奏:Chrome 最快每 4 ms 读取一次手柄,所以超过 250 Hz 的回报率显示的数值都相同。如果能统计的只有这个节奏,PadBench 就不显示数值,详见下一节。
此处无法测量
浏览器的 Gamepad API 每次屏幕刷新只交给 PadBench 一个读数,因此无法统计手柄自身的报告。此时 PadBench 不显示“回报率”卡片,而不会拿浏览器的节奏冒充手柄的回报率。如果 Chrome 或 Edge 能通过 WebHID 打开手柄,“按键”卡片或该手柄“手柄”标签页中的“使用 WebHID”会直接读取手柄,并统计每一个报告。
报告的均匀程度
在统计每一个报告的情况下,卡片还会根据最近 2,000 个报告间隔,显示报告到来的均匀程度:1,000 Hz 时为最近两秒,65 Hz 时为最近半分钟。
间隔中位数
这些间隔的中间值,即两个报告之间的通常时间:250 Hz 时为 4 ms,1,000 Hz 时为 1 ms。如果它与 1 秒除以回报率的结果不同,说明手柄是成批发送报告的。
抖动(p99−中位数)
最慢的报告比平常晚多少:即 p99(100 个间隔中有 99 个短于它的那个值)减去中位数。抖动为 1.2 ms,表示每 100 个报告中有一个至少晚到 1.2 ms。有线连接的手柄通常不到 1 ms;通过蓝牙时,几毫秒也很常见。
最长间隔
在这些间隔中,手柄最长有多久没有发送报告。在此期间按下的按键要等这么久才会被发送:在 250 Hz 时,8 ms 的间隔意味着漏掉了一个报告;而 1 秒或更长的间隔(蓝牙有时会出现)则是一次停顿。
直方图
这些间隔按长度分布,从左侧的 0 ms 到中位数的两倍,最慢的间隔需要时会延伸得更远;每根柱的高度表示落在该区间内的间隔数。稳定的手柄会在其间隔处显示一根高柱;柱子分散或出现长间隔,说明有些按键操作要等更久才会被发送。靠近 0 ms 的柱是一起到达的报告,通常紧跟在一个迟到的报告之后,因为电脑会把积压的报告一并传递。超出图表范围的间隔会在图表下方计数。
为什么没有延迟数值
一次按下最多等待一个报告间隔就会被发送。其余的延迟发生在手柄内部,即从开关到生成报告的过程,软件无法看到,因此任何延迟数值都只是猜测,PadBench 不显示。