我正在用C++构建一个FIX引擎,但是我没有引用来知道什么被认为是良好的性能指标。考虑到网络时间和FIX解析时间,客户端将FIX消息发送到服务器的最佳时间(以微秒为单位)是多少?还有人知道这种从客户端到服务器的简单FIX-message消息到服务器操作的当前期望的最低延迟吗?

最佳答案

这将取决于您的FIX引擎可以将字节解析为FixMessage对象的速度,更重要的是取决于您的网络代码的速度。您是否也在编写网络堆栈?从外部看,编写FIX引擎看起来很简单,但是实际上这是一个复杂的任务,其中包含太多的案例和功能,您必须涵盖。您要支持重传吗?异步审核日志记录? FIX session 计时器?重复组中的重复组?您应该考虑使用开源或商业FIX引擎。

至于您应该期望的延迟,我不知道任何会低于4.5微秒的FIX引擎。这是将FixMessage对象写入ByteBuffer,通过网络将ByteBuffer传输到服务器,然后服务器从网络读取ByteBuffer并将其解析回FixMessage对象的单向总时间。如果使用下降的FIX引擎,则瓶颈将是网络I/O,而不是FIX解析。

为了给您一些数字,这是CoralFIX的基准,它是用Java编写的FIX引擎。如果可以,请告诉我:)

Messages: 1,800,000 (one-way)
Avg Time:         4.774 micros
Min Time:         4.535 micros
Max Time:        69.516 micros
75%     =   [avg: 4.712 micros, max:  4.774 micros]
90%     =   [avg: 4.726 micros, max:  4.825 micros]
99%     =   [avg: 4.761 micros, max:  5.46  micros]
99.9%   =   [avg: 4.769 micros, max:  7.07  micros]
99.99%  =   [avg: 4.772 micros, max:  9.481 micros]
99.999% =   [avg: 4.773 micros, max: 24.017 micros]

免责声明:我是CoralFIX的开发人员之一。

关于c++ - FIX引擎从客户端向服务器发送FIX消息的最低延迟是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31303392/

10-11 22:59