1. Performance: 2x faster than Quickfix
We've had some fantastic improvements in encode/decode performance. For the same message, Fix8 encodes 2.8 times faster and decodes 1.6 times faster averaging 2 times over Quickfix. In other words, reduces encode latency by 64% and reduces decode latency by36%. See Performance to see how we substantiate this shameless bragging.
2. Unit testingThe first phase of our unit testing framework is complete. We have incorporated the following test catagories with a total of 31 individual tests. We will continually add more....
message, filelogger, filePersister, sessionId, sessionTest
We have also improved the supplied harness.cpp test application. This can be used to script load and replay FIX messages to in a session. This mechanism can be used to automate testing.
3. Summary of changes
- Fixed Jira tickets FX-56, FX-55, FX-54, FX-53, FX-52, FX-51, FX-50, FX-49, FX-48, FX-47, FX-46, FX-45, FX-31
- Integrate a 3rd party unit testing framework
- Integrate gperf tcmalloc alternate heap allocator
- Modify session to force sequence number assignment when requested
- Improve fmt_chksum routine
- Implement hash array index lookup for fields
- Provide component metadata visibility
- Replace double field encode (sprintf) with modp_dtoa
- Remove custom field support
- Remove some virtual methods from fields and generated messages
- Fix Fastflow install not placing includes in correct path
- Fix MemoryPersister::get not handling end record situation correctly
- Fix Invalid Session::handle_resend_request not resetting session state
- Fix In get_last_seqnum(unsigned& to) of MemoryPersister, can't get last seqnum from the argument "to"
- Fix hftest preload should preload on startup
- Integration of gperf thread cache malloc (tcmalloc) heap allocator