问题标签 [low-latency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
performance - 使用 TCP Acks 测量服务器的延迟?
我正在尝试测量我无法控制的服务器的延迟。这是在一个托管环境中,因此延迟大约为 500 微秒(0.5 毫秒)。
我了解 Cisco 设备经常降低 ICMP 流量的优先级,使 ping 时间不可靠。有没有办法让我判断我正在穿越的齿轮是否是这种情况?
我可以使用 TCP 确认来确定远程服务器的最小延迟吗?为此,我需要以某种方式强制远程服务器在接收到我的数据时立即发送 TCP 确认。
macos - 如何消除快速流媒体视频中的延迟
我正在制作一个客户端原型,该客户端通过 quicktime 客户端显示来自 HaiVision Barracuda 的流式视频。我一直无法将缓冲区大小减少到 3.0 秒以下......对于这个应用程序,我们需要网络允许的尽可能低的延迟,并且更喜欢视频丢失而不是延迟。我正在执行以下操作:
尽管 ComponentResult 和 OSErr 都返回 -50,但我似乎一直在获取有效的对象/结构直到 QTSPres。流式视频播放正常,但缓冲区仍为 3.0 秒。任何帮助/见解表示赞赏。
Ĵ
router - 路由器延迟,当网络具有不同的带宽时
我有一个问题:我在路由器的一侧(称为 A 侧)有一个 4Mbit 连接,而在路由器的另一侧(B 侧)有一个 1Gbit 连接。如果现在有一个 1500 字节的数据包从 A 侧进入。路由器是等到它在 A 侧收到所有数据包(所有 1500 字节)后才将其转发到 B 侧,还是分块发送?
对不起,如果这个问题太基本了,但我真的没有找到这个问题的好答案。
web-applications - 替代 java/flash 在 webapps 中进行低延迟双向通信?
我想设计具有低延迟的网络应用程序(例如游戏)。我认为 ajax 的标头会增加延迟。我真正想要的是一个连接永不中断的协议,客户端和服务器都可以立即相互推送数据。(因此彗星并不是一个真正的选择,因为只有一侧有交流)。最好将数据作为二进制发送并压缩。
编辑:我想要 java/flash/silverlight 的替代品,因为我的平台是 ipad/iphone,它不支持 java/flash/silverlight
请不要推荐任何/需要java/flash/silverlight的东西,谢谢
java - 在另一个线程上有效执行的工作的最小大小?
我有一个接收 UDP 消息的低延迟系统。根据消息,系统通过发送 0 到 5 条消息进行响应。找出每个可能的响应需要 50 us(微秒),所以如果我们必须发送 5 个响应,则需要 250 us。
我正在考虑将系统拆分,以便每个可能的响应都由不同的线程计算,但我很好奇为使其更好所需的最短“工作时间”。虽然我知道我需要对此进行基准测试,但我对应该在单独的线程上完成的最少工作的意见感兴趣。
如果我有 5 个线程在等待一个信号来完成 50 us 的工作,并且它们竞争不多,那么在所有 5 个线程完成之前的总时间会多于还是少于 250 us?
performance - 访问各种缓存和主存的大概成本?
谁能给我访问 L1、L2 和 L3 缓存以及 Intel i7 处理器上的主内存的大致时间(以纳秒为单位)?
虽然这不是一个专门的编程问题,但了解这些速度细节对于一些低延迟编程挑战是必要的。
networking - 低延迟网络建议(s/w 和 h/w)
我想知道 SO'ers 在调查网络延迟问题以及合并的各种解决方案和优化时使用的各种技术/提示/技巧/银弹。
我正在寻找可以应用于软件或硬件的解决方案。
例如:
- 增加套接字缓冲区大小
- 使用 OS 的反应器模式的最佳选项(选择并不总是最佳选项)
- 使用极端网卡,例如 bigfoot Killer 2100
- 网线尽量短,不要将网线相互缠绕
- 在 2 点之间复制大量数据时 - 考虑往返延迟并使用多个套接字连接来完全饱和链接
其他一些建议是什么?
c# - Best way to learn how to write latency-critical, fast C++/Java/C# code?
Could anyone give me some pointers as to the best way in which to learn how to do very low latency programming? I have many programming books but I've never seen one which focused (or helped) on writing extremely fast code. Or are books not the best way forward?
Some advice from an expert would be really appreciated!
EDIT: I think I'm referring more to CPU/Memory bound.
c++ - 将 32 位整数存储到磁盘的绝对最快方法?
我有一个对延迟非常敏感的例程,它顺序生成整数,但需要将最后生成的整数存储到磁盘以防崩溃或重新启动。
目前我正在寻找文件的开头,然后写出整数,然后在每次生成新的 int 时刷新。刷新是必需的,因此写入至少会命中电池支持的控制器缓存。
寻道的成本很高,所以我想只附加 4 个字节,如果需要恢复,则寻道到最后并读取最后 4 个字节。前面的语句显然假设没有太多其他磁盘活动发生,因此理想情况下,写头应该留在文件末尾。
这个数字通常不会超过 10,000,000,所以 40MB 还不错。
关于如何在不牺牲完整性的情况下实现最小延迟的任何建议?
Linux 2.6+ 上的 C 或 C++
c++ - 在给定结构类型的情况下返回某个字符缓冲区的绝对最快(并且希望是优雅的)方式
好的,首先,性能在这里是最重要的,所以我怀疑地图是否可行。我有一个结构列表(大约 16 个),例如
每个都是不同的,每个都有不同的大小。
我想知道我们可以用什么优雅的方式来做一些事情:
然后编写一些方法或映射来返回 BufferA,如果你正在使用结构 A。速度绝对是最重要的,我想使用模板会有所帮助,但我不确定整个事情是否可以模板化。
更新***抱歉不清楚,缓冲区都是预先分配的。在给定结构类型的情况下,我只需要一种非常快速的方法来获得正确的缓冲区。
更新 2*** 抱歉没有指定,对齐是这里的一个重要特征,实际上我使用 #pragma pack(push, 1) 对每个结构进行字节对齐