跨大西洋ping比向屏幕发送像素更快?


809

约翰·卡马克(John Carmack) 发推文

与向屏幕发送像素相比,向欧洲发送IP数据包的速度更快。那是怎么了?

如果不是约翰·卡马克(John Carmack),我会将其归类为“互联网之间的愚蠢”。

但这是约翰·卡马克(John Carmack)。

这怎么可能是真的?

为了避免讨论推文中的确切含义,我希望得到以下答复:

在最佳情况下,从美国的服务器发送一个IP数据包到欧洲某处需要多长时间,从软件触发该数据包的时间到上述软件收到该数据包的时间。司机级别?

在最佳情况下,从高于驱动程序级别的软件更改该像素值的点开始测量,在屏幕上显示像素需要多长时间?


即使假设跨大西洋连接是金钱可以买到的最好的光缆,并且约翰正坐在他的ISP旁边,数据仍然必须编码为IP数据包,从主内存传到他的网卡从那里通过墙壁上的电缆进入另一座建筑物,可能会跳到那里的几台服务器上(但我们假设它只需要一个中继),就可以在整个海洋中被光子化,并由光电传感器转换成电脉冲,最后由另一张网卡解释。让我们停在那里。

对于像素,这是一个简单的机器字,它通过PCI Express插槽发送,并写入缓冲区,然后刷新到屏幕。即使考虑到“单个像素”可能导致整个屏幕缓冲区传输到显示器这一事实,我也看不出这会变慢:这不像比特是“一一传输”的,而是是连续的电脉冲,它们之间没有延迟地传输(对吗?)。


50
他是疯了还是这是不寻常的情况。由于光纤中的光速,您无法通过一种方式在不到60毫秒的时间内从美国到欧洲获取数据。您的视频卡每隔17毫秒左右就会显示出一个全新的像素屏幕。即使使用双重缓冲,您仍然可以击败数据包很多。
大卫·史瓦兹

84
@DavidSchwartz:您正在孤立地考虑GPU。是的,GPU可以在不到60毫秒的时间内完成很多工作。但是John抱怨涉及监视器的整个链条。您是否知道从图像数据传输到显示器并在屏幕上显示之前会涉及多少延迟?17ms的数字毫无意义且无关紧要。是的,GPU每17毫秒准备一次新图像,是的,屏幕每17毫秒显示一次新图像。但这并没有说明图像在显示之前已经经过了多长时间
2012年

24
他是一名游戏程序员,他说的速度比将像素发送到屏幕的速度还快 ...所以也许可以解释3D图形渲染延迟?尽管在大多数视频游戏中这应该是相当低的;它们针对性能而非质量进行优化。当然,他有可能被夸大(我说的很明显,很高兴吗?)。
鲍勃

19
到百思买(Best Buy)看些时间,观看所有电视机,将它们全部调谐到同一室内频道。甚至显然相同的集合也将相对于彼此具有明显的(也许是四分之一秒)滞后。但除此之外,还必须在UI内实现整个“绘制”循环(这可能涉及重新渲染图像的多个“层”)。而且,当然,如果需要3-D渲染或某些类似的渲染会大大增加延迟。
Daniel R Hicks

4
有很多问题值得思考,除非您知道J.Carmack真正在说什么,否则我认为没有完美的答案。也许他的推文只是对他遇到的某些情况的愚蠢评论。
巴恩2012年

Answers:


1321

将数据包发送到远程主机的时间是ping报告的时间的一半,而ping报告的是往返时间。

我正在测量的显示器是连接到PC 的Sony HMZ-T1头戴式显示器。

为了测量显示延迟,我有一个小程序,它位于旋转循环中,轮询一个游戏控制器,清除不同的颜色,并在每次按下按钮时交换缓冲区。我用240 fps摄像头同时显示游戏控制器和屏幕的视频记录,然后计算被按下的按钮与屏幕开始显示变化之间的帧数。

游戏控制器以250 Hz更新,但是没有直接的方法来测量输入路径上的延迟(我希望我仍然可以将东西连接到并行端口并使用输入/输出Sam指令)。作为对照实验,我在具有170 Hz垂直回扫的旧CRT显示器上进行了相同的测试。Aero和多台显示器可能会带来额外的延迟,但是在最佳条件下,您通常会在按钮按下后两个240 Hz帧开始在屏幕上的某个位置(禁用垂直同步)看到颜色变化。USB HID处理似乎有8毫秒左右的延迟,但是我希望在将来更好地解决这一问题。

台式LCD监视器需要10+ 240 Hz帧才能在屏幕上显示变化,这并不少见。索尼HMZ平均约为18帧,即70毫秒以上。

这是在多显示器设置中进行的,因此驱动程序的故障是几帧。

某些延迟是技术固有的。LCD面板实际更改需要4到20毫秒,具体取决于技术。单芯片LCoS显示器必须缓冲一个视频帧才能从压缩像素转换为顺序的色彩平面。激光光栅显示器需要一定数量的缓冲才能从光栅返回转换为来回扫描模式。逐帧顺序或上下分开的立体声3D显示无法一半时间更新中间帧。

正如eMagin Z800所展示的那样,OLED显示器应该是最好的显示器,它的延迟时间可与60 Hz CRT相媲美,比我测试的任何其他非CRT都要好。

索尼的性能不佳是由于软件工程不佳所致。一些电视功能(例如运动插值)需要缓冲至少一帧,并且可能会受益于更多。其他功能(如浮动菜单,格式转换,内容保护等)可以以流方式实现,但简单的方法是仅在每个子系统之间进行缓冲,在某些系统中,该子系统最多可以堆叠六帧。

这是非常不幸的,但都是可以修复的,我希望将来更多地依赖于显示器制造商。


215
我不想因为过多的离题评论而锁定此答案。约翰提供了这个答案,我们都很高兴,但是我们不需要25条都表达他们的感激,怀疑或激动的评论。谢谢。
nhinkle

28
您的USB触发器可能是作为低速USB设备(总线总线速率为125usec)运行的,导致最小的8ms延迟(硬件问题)。也许可以尝试使用PS2键盘?
鲍里斯(Boris)

4
@Marcus Lindblom被狩猎,你的意思是读吗?我认为在这种情况下,他如何获得号码与号码一样重要-有关推文的怀疑不会通过引用其他号码来解决。上下文也有帮助-此特定监视器及其次优软件最直接地使他烦恼。
杰里米(Jeremy)

13
听起来您好像在说LCD制造商说的响应时间为5毫秒,这可能是原始面板更换所需的时间,但是显示器在实际驱动显示器之前增加了更多的时间来缓冲和处理信号。 LCD。这是否意味着制造商发布了虚假/误导性的规格?
psusi


68

一些显示器可能会有很大的输入滞后

与笨拙的显示器和视频卡相结合,可算是出色的Internet连接

资料来源:

主机游戏:滞后因素•第2页

因此,在30FPS时,我们获得了8帧/ 133ms的基准性能,但是在游戏降至24FPS的第二个剪辑中,拉动触发器和Niko开始散弹射击动画之间存在明显的12帧/ 200ms延迟。这是200毫秒,加上屏幕产生的额外延迟。哎哟。

显示器可以再增加5-10毫秒

因此,控制台可能会有210毫秒的延迟

而且,根据David的评论,最好的情况是发送数据包的时间约为70ms


1
-1我不认为John Carmack使用笨拙的显示器或视频卡。请通过可靠的来源引用您的主张。
巴恩

14
抱歉,我仍然看不到这真的在回答问题。这句话引述了“拉动触发器”,这意味着在输入处理,场景渲染等方面的工作要比仅仅向屏幕发送像素还要多。而且,与现代硬件性能相比,人类的反应速度相对较差。从家伙认为他扣动扳​​机到实际扣动扳机之间的时间很可能是瓶颈。
康拉德·鲁道夫

2
链接的文章显示,该分析的作者购买了一种特殊的设备,可以准确地向您显示按钮的按下时间,因此我认为它们并没有带动数字。
Melikoth

11
@KonradRudolph:感知是非常奇怪的东西。不久前,我读了一篇有关实验控制器的文章,该控制器直接从脊髓读取脉冲。人们会觉得计算机在单击之前就已经在运行,即使单击它是对他们的反应也是他们自己的神经命令。
Zan Lynx

11
@Zan Lynx:这是一个已知的效果。Google对于“ Benjamin Libet的Half Second Delay”的提出。人的意识需要大量的处理时间。现在,所有正在发生的事情实际上都发生在过去。半秒钟前,您的所有感官都将为您提供事件的“集成多媒体体验”。此外,事件似乎被大脑“打上了时间戳”。相对于触觉刺激,必须延迟直接的大脑刺激,以使受试者同时报告感觉!
卡兹(Kaz)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.