Technical Informational Note:
OnixS selfConnect: C++ FAST Decoder Benchmarks
London: Friday 26th August 2011 – OnixS offers the OnixS selfConnect C++ range of FIX Engine and FAST Encoder/Decoder class library implementations that can be used with any ANSI C++ compliant compiler to provide high performance FIX standards based solutions for mission-critical trading systems.
This OnixS Technical Informational Note describes a performance profile using the reference implementation benchmarks included in the standard software distribution package.
What was benchmarked:
We measured the performance of the FIX/FAST decoder available in OnixS selfConnect FIX Engine for C++ API. Benchmarks were executed using the FastBenchmark sample included in the standard selfConnect C++ distribution package which uses a single FAST-encoded binary chunk and decodes it multiple times.
The FAST-encoded messages used for benchmarking represent average messages from the live CME production environment. According to previously gathered statistics average CME incremental refresh (msgtype=X) message on channel 11 contains one or two updates for order book. In contrast, a regular message on channel 9 contains four or five of such entries. We used a sample message with a single book-update entry for benchmarking channel 11, and with four entries for channel 9. Therefore, all the results represent benchmarking on real production data.
Also, each benchmark was executed several times to get average values.
Environment:
We used what Intel calls an ‘entry-level workstation/sever’ machine: Intel Core i7-2600 @3.4Ghz (Server equivalent Intel Xeon E3-1275) and 16Gb of DDR3 RAM @ 1333Mhz. Operating System used: x64 edition of Windows 7 Ultimate with Service Pack 1 installed. Development Environment: Microsoft Visual Studio 2010.
Results:
Throughput | CME 11 (msg/sec) | CME 9 (msg/sec) |
---|---|---|
x64 | 1168000 |
511000 |
x86 | 938000 |
396000 |
Latency | CME 11 (usec) | CME 9 (usec) |
---|---|---|
x64 | 0.86 |
1.96 |
x86 | 1.07 |
2.53 |
Sample messages:
CME channel | Encoded chunk size (bytes) | Decoded message size (bytes) |
---|---|---|
CME 11 | 36 |
179 |
CME 9 | 79 |
440 |
Summary:
For a single entry CME channel 11 FAST Encoded market data message (for book change, trade, statistics) running on Windows C++ 64-bit FAST decoding latency was less than a micro-second at 0.860 micro-seconds with a throughput of 1,168,000 messages per second.
For the CME channel 9 FAST Encoded 4 entry sample message the throughput was 1.96 micro-seconds at 511,000 messages per second.
This Technical InfoNote is a baseline performance profile for informational purposes only. The only performance that matters is that which users of OnixS solutions see within the target deployment platforms and context. We therefore provide the same benchmark code used in this note, and other sets of fast-start reference implementation source code, within our standard distributions. We encourage you to execute these tests to measure and profile your own results.
Click here to download this OnixS TechInfoNote in pdf format.
- Ends -