问题标签 [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.

0 投票
3 回答
362 浏览

c# - C# 到 Java 延迟敏感类转换,在我的情况下 TreeMap 会替换 SortedList 吗?

我在 Java 中复制了一个 C# 类。(我是 Java 新手。)

我的班级需要跟踪与双精度相关的 int 值。然后,只要一个值低于或高于双打,它就需要创建一个 Alerter(int) 。

Alerter.LatencySensitiveAction() ,需要立即调用,它是延迟敏感和时间关键的代码。DoubleMap 类的目的是尽可能快地调用 LatencySensitiveAction()。

DoubleMap.OnData() 是该类的延迟敏感方法(如下)。

TreeMap 有意义吗?我在 C# 中使用 SortedList。我正在寻找一个关联集合,该集合以快速遍历的排序顺序存储键/值对。

有人告诉我这个 Java 代码

效率不高,因为它创建了一个新对象。我应该改用什么?

所以基本上,我在问使用哪个集合可以将 double 与 int 相关联,以排序顺序存储,以及按顺序遍历集合的最快方法是什么。

我相信我的 C# 代码(如下)可以完成这项工作,需要帮​​助将其转换为 Java。如果您认为我的 C# 代码也可以改进.. 请告诉.. ty。

Java 代码:

C#代码:

0 投票
3 回答
5799 浏览

java - 同一容器中的战争之间的进程内通信

有哪些选项可以在同一码头容器中运行的两场战争之间实现低延迟通信?

我基本上需要在一场战争中从另一场战争中调用一项服务,但不能承担将其作为 Web 服务调用的开销。

由于它们在同一个 JVM 中运行,我希望避免使用 RMI/JMS 等,但我不知道我还有什么其他选择?

我已经查看了 servlet 间通信,但是由于不推荐使用直接方法调用,这似乎不是正确的选择?

我也找到了 kyronet,但是有没有更好的解决方案,因为它在同一个 JVM 中?

我正在寻找的是类似于 Apache Camel 的VM 组件( web 应用程序之间的seda),但由于只有一个应用程序使用 Camel,因此这不是一种选择。

我知道我可能不得不在战争之间分享一些 DTO,但请不要建议将服务拉入共享库,如果这是一个选项,我不会问这个问题:)

编辑:

嵌入 EJB 容器也可能不是一种选择。

0 投票
2 回答
764 浏览

java - 谁管理 Java 中的线程

我想知道谁在 Java 中管理 JVM 创建的线程?

0 投票
3 回答
16462 浏览

performance - 使用 Scala/Akka 在 JVM 中进行高频交易

让我们想象一个假设的 Java 中的 HFT 系统,需要(非常)低延迟,由于不变性(Scala?),有许多短命的小对象,每秒数千个连接,以及大量消息在事件驱动架构(akka 和 amqp?)。

对于那里的专家来说,(假设)什么是 JVM 7 的最佳调优?什么类型的代码会让它开心?Scala 和 Akka 会为这种系统做好准备吗?

注意:有一些类似的问题,比如这个但我还没有找到一个涵盖 Scala 的问题(它在 JVM 中有自己的特殊足迹)。

0 投票
1 回答
1518 浏览

windows - 用于低延迟线程通信的 Windows 睡眠微秒

有什么办法可以让线程暂停 1-2 微秒?(注意 1 微秒 = 1/1000 毫秒)。我知道有人问过这个问题,但到目前为止还没有很好的答案。这是我的情况,为什么我需要这个:

我有一个运行多个线程来服务客户端请求的服务器。请求是由其他线程通过偶尔发生的共享内存发送的。但是,一旦发送请求,就需要尽快处理。因此,当请求在共享内存中排队时,我需要一种快速的方法来通知其中一个服务线程。

使用了 Windows 事件对象,但在我的机器上从 SetEvent() 到 WaitForSingleObject() 返回需要 6-7us(尝试设置进程/线程优先级但仍然没有太大改进)。我尝试使用一个繁忙的循环来让服务线程继续池化内存,从而将延迟降低到 1-2us,这已经足够了,但它会烧毁 CPU,而请求只像每分钟发送一次一样。如果我可以在循环中插入微/纳秒睡眠,我至少可以释放我的 CPU,同时保持低延迟。

如果有人能建议我另一种方法来进行延迟低于 2us 的线程通信,我会很高兴。谢谢

0 投票
3 回答
7210 浏览

audio - Windows 8 - 低延迟音频

我正在考虑为即将推出的 Windows 8 开发一个应用程序。该应用程序需要低延迟的音频录制和播放,我正在尝试找出操作系统是否会支持它(而不是其他平台)。

所以我想知道的是:

  1. Windows 8 中是否有低延迟音频 API?
  2. 它会在 PC 以外的平台(例如平板电脑)上得到支持吗?

谢谢!

0 投票
1 回答
2309 浏览

java - Java:低延迟性能测量

测量低延迟 Java 应用程序性能的过程与测量非低延迟 Java 应用程序性能的过程是否不同?如果是,如何实现,是否有任何特定工具用于测量低延迟性能?

编辑:例如,这是一条具体的信息:http ://www.artima.com/forums/flat.jsp?forum=121&thread=212810

0 投票
2 回答
757 浏览

java - 分析 jHiccup 延迟。57us 打嗝的来源

我正在使用 Azul Systems 构建的 jHiccup 工具测量“打嗝”。它收集数据以识别 JVM 运行 Java 应用程序时发生的暂停时间(打嗝)的频率和持续时间。它适用于 JVM 级别及更高级别(操作系统、驱动程序等)。

以下是结果打嗝 这些结果是在使用 SUSE SLERT 11 2.6.33 内核 PREEMPT RT、Intel i5、4g 内存的机器上获得的。该进程在 cpu 屏蔽下运行(3 个逻辑处理器被隔离)并具有 99 优先级(FIFO)。我想知道这 57 mcs 延迟是从哪里来的。该应用程序非常简单。它是网络订单处理系统,所以它解析 TCP 数据包馈送,做简单的业务逻辑等等。没有 GC,同步,它是单线程的。

我猜这可能是网络问题,例如阻止读取?当我尝试使用忙等待进行非阻塞读取时,我得到了类似的结果,但也许我做错了。我不知道这些打嗝是从哪里来的。

0 投票
1 回答
18394 浏览

dns - 为什么 Google 公共 DNS(8.8.8.8) 的 ping 延迟如此之低?

我使用just-ping ping 谷歌公共DNS 服务器,IP 为8.8.8.8。 just-ping可以从全球 50 个位置 ping 主机。

我发现 DNS 的延迟在全球范围内都很低。许多城市彼此相距很远,但它们的 ping 延迟相同(约 5 毫秒)。

我想 IP 8.8.8.8 被定向到一台主机。即使远离客户,该主机如何反应如此之快?

谢谢!

0 投票
0 回答
437 浏览

multithreading - 具有可变持续时间“业务逻辑”的破坏者模式

如何在存在可变持续时间“业务逻辑”任务的流程中有效地使用破坏者?以前做过吗?

可以通过处理响应阶段的第二个环形缓冲区来完成吗?如果是这样,我该怎么做。

我了解 Disruptor 并看到了我的调用链的一些特定部分,我可以在其中应用这个概念。具体来说,该应用程序是一个中间件类型的应用程序,它执行以下步骤:

  • 阅读入站消息,解组请求
  • 确定请求的客户详细信息,确定要处理的工作流程步骤
  • 调用后端系统执行步骤
  • 整理响应、记录响应、编组并返回给消费者

问题是后端步骤的某些实例可能需要“较长”时间,这可能会迫使短期运行任务的响应阶段等待较长时间运行的任务。假设后端系统的调用可以异步或同步完成 - 所以这个想法是后端系统调用只是一个触发后端异步请求的消费者。

后端系统响应时间可以从 5 毫秒(一些请求)、50 毫秒(90% 的请求)到 - 5000 毫秒(1% 的请求)(想想大型磁盘 I/O)。

我可以看到 Disruptor 具有潜在的高效性,但无法绕过这个障碍来降低平均延迟。