我正在用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/