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.