人类能够感知的最小延迟是多少?

27

可能重复:
什么是最短可感知应用响应延迟?

我正在对一些JavaScript UI代码进行性能分析,因为感觉有点卡顿。到目前为止,我找到了一些瓶颈并进行了优化,但我想为此定义一个可度量的要求。

人类感觉不到卡顿需要多快的响应呢?例如,键盘按键被按下和字母出现在屏幕上之间的最小可检测延迟是多少?在什么时候进一步的优化对于人类已经没有任何区别了呢?

许多显示器的刷新率约为60-120Hz。这是否意味着魔数大约为8-16ms?


这是一个非常有趣的问题。我相信它会有所不同,但在这个领域肯定有一些非常好的研究。 - Preet Sangha
为了“即时”反馈 - 我记得测试过最快的人类响应时间 - 大约在10毫秒左右。 - Randy
我还记得眼睛在观看视频时可以处理大约25帧每秒的画面。 - Randy
1
流畅动画的最低帧率和响应“即时”出现的最大延迟之间存在差异。 - hammar
当然可以 - 但是尝试优化到快于1/25秒可能是浪费时间。 - Randy
显示剩余2条评论
4个回答

11

通常情况下,我认为低于100毫秒的响应速度被视为"即时"。如果超过这个时间,延迟就会变得明显。当然,这可能因人而异,也取决于延迟发生的上下文。

你可能会发现这个例子有所帮助:http://jsfiddle.net/QGmBy/


不错的例子,但我相当确定我仍然可以看到80毫秒的延迟。还有其他人吗?虽然这是一个流行的答案,但由于某种原因,100毫秒似乎太长了,不能成为最小可检测延迟。 - pepsi
3
在可用性领域,经验法则是0.1秒被认为是“瞬间”,1秒被认为是“相当快”,而10秒被认为是“开始感到无聊并寻找其他事情做”的程度。但这些只是大致的数字,不是精确的,旨在表示开始干扰手头任务的延迟而非最小可察觉的延迟。是的,我能(勉强)察觉到80毫秒的延迟,但我不会称其为“令人烦恼的缓慢” :) - j-g-faustus
@pepsi - 和 j-g-faustus 所说的一样。100 毫秒只是一个普遍规则,而非确切答案。我也可以看出 80 毫秒的示例比之前的示例要稍微慢一些,但它仍然发生得相当快。它肯定比 160 毫秒的示例更难察觉。 - aroth
请注意,虽然100毫秒的延迟被感知为即时的,但50毫秒的延迟被感知为更加即时。 - Finesse

11
考虑到"按键事件"和字母出现在屏幕上是两个单独的帧,这意味着,如果用户在观看屏幕时按下某个键,则希望随后立即看到它。 这里的“随后立即”指的是需要具有60 Hz或更高的响应时间。
因此,应该瞄准8-16毫秒的值,因为这将导致与电影中所看到的相同效果。换句话说,用户对这些值没有延迟感知。
然而,你必须记住,键盘本身也有轮询时间,并且其他不一定与脚本本身有关的附加延迟可能会干扰其时间。因此,瞄准高于60 Hz的值将为您提供更大的安全边际,以抵御那些可能会增加微小延迟的其他可能影响。
还要注意的是,在某些应用程序中,100毫秒的延迟可能看起来不明显,但实际上是可以察觉的,因为它对应于10 Hz,如果您以该刷新率播放电影,则很可能会意识到电影的每个帧之间的间隔。因此,在通用的足够上下文中,不应真正考虑这个值。
人眼对不同条件和图像部分的敏感度是不同的,因此您应该谨慎考虑更高的刷新率,以适应这种情况。 此链接提供了有关屏幕特性及其变化如何被人眼感知的进一步信息,并可能为您提供针对给定上下文的刷新率方面的建议,基于脚本的视觉影响。

1
但是人类无法感知每秒60帧之间的边界,特别是只更新屏幕的一小部分时。此外,即使处理在“下一个”帧中及时完成以显示更新,也不能保证该帧将立即显示在用户当前看到的帧后面。例如,图形驱动程序或显示器内部可能正在进行缓冲(或两者都在进行)。在大多数情况下,追求在下一帧中完成处理是过度的(例外:游戏)。 - aroth
1
然而,也有可能脚本适用于不止一个角色,我认为最常见的方法是将其视为电影,从一帧到下一帧,整个屏幕可能以多种方式发生变化。当然,在许多情况下,并不需要这么激进,但这是一种数学方法。即使在游戏中,100毫秒的延迟根据游戏类型可能会产生完全不同的感觉,因为延迟的含义及我们对该游戏的感知会有所不同。 - Luis Miguel Serrano

3

2
如果事件只发生一次,则100毫秒应该是更高的限制。如果事件是连续运动的一部分,则大约10-15毫秒就足够了,因为在类似滑动的东西(每次一个或多个像素)中出现这样的延迟,如果这些延迟连续发生,那么可以注意到100毫秒的延迟。
此外,这在某种程度上取决于上下文,被延迟的是什么。按键事件、滑动的东西、在其他机器上发生的实时事件,所有这些都有不同的“容忍”水平 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接