3

我在 QuickfixJ 中的处理速度有问题。我在这个问题中读到它可以处理 300 条消息/秒。我还看到其他地方报告了数千个数字。我的 Quickfix 会话代码接收消息列表,并通过 Sesssion.SendToTarget() 逐一发送;

我发送消息的循环可能会减慢我的速度,但我想知道是否有办法发送消息列表或加快发送这些消息的过程。也有可能是因为我正在登录屏幕,这让我放慢了速度。我会从无头运行它并仅记录到文件日志中受益吗?

4

3 回答 3

4

我见过 QuickFIX/J 每秒处理数千条消息。但是,您将无法在单个 FIX 会话中获得该性能。我描述的场景涉及多个会话。这很重要的原因是由于 FIX 序列号,FIX 协议本质上是每个会话的顺序。这实际上意味着如果您有一个会话,您将有一个线程处理消息。通过多个会话,引擎可以利用多个线程和处理器。

一般来说,文件 I/O 是主要开销。寻找优化文件系统访问的方法。如果您在没有日志记录和 MemoryStore 的情况下运行引擎,您会发现它非常快。我不会将它用于极低延迟的应用程序,但它还不错。

于 2011-12-03T12:08:03.977 回答
1

登录屏幕会大大减慢您的速度。在屏幕上登录时,我每秒发出 30-40 条消息,而在没有登录的情况下,我发出了超过 400 条消息。如此简单,不要在屏幕上显示任何内容。此外,这个过程中缓慢的部分是接受者的回答。Initiator 每秒发送超过 2000 条消息,但 Acceptor 的响应减慢了整个过程。

于 2012-02-10T14:54:53.613 回答
0

您是否在循环中创建每条消息,因为这可能是您的开销?这可以异步完成,然后在消息完成时发送消息。如果您想确保最小化发送时间,异步记录将消除额外的开销,只需确保将任何时间数据发送到记录线程,以便在写入日志时准确。

于 2011-11-15T11:56:48.893 回答