OnixS C++ FIX Engine vs QuickFix C++ performance comparison

Benchmark comparison based on standard OnixS reference implementation benchmark source code samples.

Hardware

Intel(R) i9-12900KS @5.4GHz 32 GB RAM

Software

Ubuntu 22.04, gcc 12.10

OnixS C++ FIX Engine x64 v 4.10.1
QuickFIX C++ x64 v 1.15.1

Throughput (msg/sec)

Message length: 131 bytes.

Mode 

OnixS 

QuickFIX

Times OnixS faster

Send side

5.11543e+06

442727

11.4x

Receive side

4.82963e+06

330452

14.6x

Latency (microseconds)

Message length: 144 bytes.

Mode

OnixS

QuickFIX

Times OnixS faster

Internal send min

0.09

0.26

2.8x

Internal send median

0.11

0.28

2.54x

Internal send 99%

0.13

0.29

2.23x

Overall send min

1.0

4.8

4.8x

Overall send median

1.16

5.59

4.9x

Overall send 99%

1.35

6.68

4.9x

RTT/2 min

0.74

1.90

2.56x

RTT/2 median

1.17

2.28

1.94x

RTT/2 99%

1.31

2.82

2.15x

 

Parsing (msg/sec)

Message size

OnixS

QuickFIX

Times OnixS faster 

Small (106 bytes)

1e+07

909090

11x

 

Notes:

  • here is no ability to measure internal receive latency in QuickFIX because there is no onReceivedBytes analog as in the OnixS FIX Engine

  • The QuickFIX internal send latency, unlike the OnixS FIX Engine internal send latency, does not include the outgoing message serialisation and session storage latencies because the toApp callback is called before these processes.