问题标签 [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.
audio-streaming - Icecast 和 Darkice 的高音频延迟
我已经在我的 ubuntu 机器上成功安装了 icecast 和 darkice,并且能够在我的局域网上进行直播。但令我失望的是,它有 15 秒到 20 秒的延迟。这是非常糟糕的表现。我不认为这是因为我的局域网连接,因为即使我尝试在同一台 ubuntu 机器上听,仍然有延迟!
我尝试将 icecast 配置为没有突发大小,这意味着不会有缓冲,这帮助我将延迟减少到大约 6 秒到 8 秒。因此,如果您有任何建议或非常好的配置值,那将对我有很大的帮助。
PS我流式传输的格式是mp3。有人建议我应该使用 opus 编解码器,但我认为 icecast 或 darkice 不支持它。
low-latency - 当今最先进的 HFT 交易系统有多快?
您总是听说高频交易 (HFT) 以及算法的速度有多快。但我想知道 - 这些天什么是快的?
更新
我不是在考虑由交易所和运行交易应用程序的服务器之间的物理距离引起的延迟,而是由程序本身引入的延迟。
更具体地说:从事件到达应用程序中的线路到该应用程序在线路上输出订单/价格的时间是多少?即即时交易时间。
我们说的是亚毫秒吗?还是亚微秒?
人们如何实现这些延迟?在汇编中编码?FPGA?古老的 C++ 代码?
更新
最近发表了一篇关于 ACM 的有趣文章,提供了当今 HFT 技术的大量细节,值得一读:
memory-management - 在低延迟环境中如何避免重新分配?
在交易平台(低延迟环境)的订单簿中,您需要存储每个订单 ID,至少要验证每个订单都是唯一的。您在一个交易日内可以收到的订单 ID 数量是无限的。除了使用历史数据分析之外,没有任何数字可以让您适当地“猜测”来预先分配您的数据结构。有哪些方案可以避免当日订单 ID 容器重新分配?
ios - Django 后端和 iOS/移动客户端的 HTTP Rest 替代方案?
我们目前正在编写一个基于 Django 的后端,它将被 iOS 和其他移动客户端大量使用。
我们使用 django-rest-framework 来提供 HTTP REST API。
该 API 用于下载产品列表、检查库存水平、购物车和付款,以及从客户端发回分析数据。在可能的情况下,我们希望在客户之间保持产品和库存水平实时同步,或者尽可能接近实时。
我们确实希望我们的 API 使用非常健谈。
我很好奇 - 除了 HTTP REST 之外,我们还有什么其他替代方案可以很好地处理实时同步,并且对移动设备(其中许多可能在 3G 上运行)表现良好 - 所以带宽和延迟可能是问题)。
在这种情况下怎么办?我们可能会遇到什么问题/陷阱?
(例如 ZeroMQ?Protobuf?)
干杯,维克多
amazon-ec2 - 如何提高客户端上的 DynamoDB 性能?
我正在使用适用于 DynamoDB 的 Amazon Java SDK 客户端,GetItem 上的延迟大约为 100 毫秒,平均为 256 毫秒,以广泛传播密钥。在 cloudwatch 中大约是 8-10 毫秒。
我尝试使用 threadlocal 为每个线程启动新的 AmazonDynamoDBClient,希望它位于某些缓存中。我尝试从 BasicAWSCredentials 切换到 STSSessionCredentialsProvider 跳跃令牌安全检查更快。但是我在 EC2 实例和办公室上仍然有同样非常高的延迟。
什么会导致客户端出现这种延迟?
performance - 什么是数据的低延迟访问?
数据的低延迟访问是什么意思?
我实际上对这个术语的定义感到困惑。"LATENCY"
谁能详细说明“延迟”一词。
c++ - 一些 hashtable / unordered_map 问题
我正在开发一个需要始终保持高效的低延迟应用程序。
我需要根据字符串查找一些索引,所以我使用的是 c++ unordered_map。约束: - 仅插入和查找,没有删除 - 键是字符串,值是 int - 预计将不超过 100 万个条目添加到 unordered_map
我将 unordered_map 保留设置为 100 万,这很好还是我应该保留比预期条目多 % 的订单以避免重新散列?我可以将其设置为 100 万,还是应该设置为接近 100 万或 2 次方的大素数。
我在 c++ std lib 中使用默认字符串哈希函数,它恰好是 murmur2。我的键介于 - 25 到 50 个字符之间,并且都是包含数字、大写英文字母和 _ 字符的唯一键。这个散列函数是否足以均匀分布密钥,还是我需要为 unordered_map 提供更好的散列函数?
unordered_map 是否会为 100 万个键、值对以及大小为 100 万的数组分配空间,当我调用保留或保留时,仅创建该大小的数组并在插入时动态分配键、值对?
插入时堆上的键、值对的动态分配会有多大的阻力?特别是因为这是一个包含许多条目的大哈希表。
出于性能原因,实现我自己的哈希表并在堆栈上或初始化期间为 100 万个条目预分配内存是个好主意,或者上述 unordered_map 的优化是否足够接近?
有没有办法提前为 unorderd_map 中的预期条目数分配内存以避免插入时的动态分配?
c++ - 如何使用预分配的内存实现 trie?
我想在低延迟应用程序中使用 TRIE 来搜索 25 到 60 个字符之间的字符串。字符串将包含英文字母大写和数字。
使用 malloc 动态创建 trie 节点效率不高。
很高兴知道是否存在使用内存池等的现有实现......并且一旦预分配的内存池溢出,我们需要通过在极端事件中创建另一个内存池来处理。
java - 修复 Java 中的方法延迟
另一个问题,相同的程序:
下面是MainGUI.java
以下是MainCell.java:
以下是 SizeChooser.java:
所以现在的问题是,当按下随机化按钮,或者存在大量单元格然后启动计时器时,单元格不像活动较少的单元格那样活泼。例如,对于 100 列和 50 行,当按下随机按钮时,一个单元格激活,然后是下一个单元格,然后是另一个单元格,依此类推。我可以让它们同时激活吗?这只是一次计算太多东西的问题吗?并发会有帮助吗?
快速编辑:摇摆计时器是这个项目的最佳创意吗?
audio - Liquidsoap + JACK 延迟
如何最小化 Liquidsoap 的处理延迟?
我写了一个非常简单的 Liquidsoap 脚本来测试延迟:
当我将端口与音乐播放器 (mpd) 和声卡连接时,音乐播放开始和停止大约有 0.5 秒的延迟。我将 JACK 缓冲区大小设置为 1024,因此延迟应该约为 0.02 秒。当我将 mpd 直接连接到声卡时,延迟并不明显,因此肯定是 Liquidsoap 的问题。
我是否缺少任何配置选项,当设置为默认值时会导致不需要的缓冲?我为输入和输出尝试了各种 clock_safe 值,但它们什么也没做。