26

可能重复:
可感知的最短应用程序响应延迟是多少?

我一直在分析一些 JavaScript UI 代码,因为它感觉有点滞后。到目前为止,我已经发现了一些瓶颈并对其进行了优化,但我想为此定义一个可衡量的要求。

为了让人类不会注意到滞后,应该多快做出响应?例如,从按下键盘键到屏幕上出现字母之间可检测到的最小延迟是多少?在什么时候进一步优化不会对人类产生任何影响?

许多显示器的刷新率大约在 60-120Hz 范围内。这是否意味着幻数约为 8-16 毫秒?

4

4 回答 4

11

作为一般规则,我发现任何快于 100 毫秒的东西往往被认为是“即时的”。比这长得多,延迟肯定会变得明显。当然,这会因人而异,也取决于发生延迟的环境。

您可能会发现此示例很有帮助:http: //jsfiddle.net/QGmBy/

于 2011-07-30T03:24:07.967 回答
11

将“按键”事件和出现在屏幕上的字母视为两个单独的帧,这意味着,如果用户在查看屏幕时按下一个键,他会想在之后看到它。这个“恰好在之后”意味着它应该有 60 Hz 或更高的响应时间。

出于这个原因,确实应该瞄准 8-16 毫秒的值,因为它会产生与电影中相同的效果。换言之,用户将不会感知到这些值的延迟。

但是,您必须记住,键盘有自己的轮询时间,并且不一定与脚本本身相关的额外延迟可能会干扰其时间。由于这些原因,目标值高于 60 Hz 将为您提供更大的安全余量,以应对可能增加轻微延迟的其他可能影响。

另外值得注意的是,在某些应用程序中,100 ms 的延迟可能看起来并不明显,但实际上它很明显,因为它对应于 10 Hz,如果您以该刷新率播放电影,您很可能会意识到每个电影帧之间的间隙。出于这个原因,这个值不应该在足够通用的上下文中考虑。

人眼对图像的不同条件和部分的敏感度不同,因此您应该小心并在必要时考虑更高的刷新率,以适应这种情况。

此链接包含有关人眼如何感知屏幕特征及其变化​​的更多信息,并且可以根据脚本的视觉影响让您了解在给定上下文中应该瞄准的刷新率。

于 2011-07-30T03:26:53.880 回答
3

我听说一个经验法则是 100 毫秒就足够快了。我试着找个链接...

编辑: 可感知的最短应用程序响应延迟是多少?

于 2011-07-30T03:19:23.677 回答
2

如果事件只发生一次,那么 100 毫秒应该是上限。如果事件是连续运动的一部分,那么应该是大约 10-15 毫秒,因为如果这种延迟在排彼此跟随。

此外,它在某种程度上取决于上下文,延迟的内容。按键事件,滑入,其他机器上发生的实时事件,所有这些都将具有不同的“容差”级别:)

于 2011-07-30T03:34:47.143 回答