Insights : OnixS

OnixS .NET 6.0 FIX Engine vs QuickFIXn performance comparison

Written by Admin | Apr 12, 2023 2:24:20 PM

The OnixS FIX Engine SDKs include reference implementation source code samples that are an aid for developers to quickly get familiar with, and then adapt to the target contexts.

 

One of those samples includes performance benchmarks.

 

We’re often asked, “what is your performance like?”

 

The best answer is to measure it yourself using the included reference implementation benchmark samples on the target platform(s).

 

That remains the recommendation, but these are some performance comparison numbers that we are commonly asked about so we’re sharing them here. 

 

Hardware

 

Intel(R) Core(TM) CPU i7-7700K @ 4.20GHz, 32 GB RAM

 

Software

 

Ubuntu 20.04 gcc 9.4.0

OnixS FIX Engine for .NET Core / .NET 6 v 1.9.0
QuickFIXn.Core v 1.10.0

 

Throughput (msg/sec)

Message length: 131 bytes.

 

Mode 

OnixS 

QuickFIXn

% OnixS faster

Send side

377,118

30,044

13x

Receive side

376,499

30,314

12x

 

Latency (microseconds)

Message length: 144 bytes.

 

Mode

OnixS

QuickFIXn

% OnixS faster

Internal send min

0.632

2.727

4.3x

Internal send median

0.755

3.424

4.5x

Internal send 99%

0.887

4.051

4.6x

Overall send min

2.915

80.798

27.7x

Overall send median

3.189

87.259

27.3x

Overall send 99%

3.833

153.346

40x

RTT/2 min

4.410

50.124

11.3x

RTT/2 median

5.722

57.879

10.1x

RTT/2 99%

6.540

74.791

11.4x

 
 

Parsing (msg/sec)

 

Message size

OnixS

QuickFIXn

% OnixS faster 

Small (106 bytes)

2,651,736

465,146

5.7x

 

Notes:

  • There is no ability to measure internal receive latency in QuickFIXn because there is no onReceivedBytes analog as in the OnixS FIX Engine.

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