I created a Quickfix branch on Github which introduces a large number of
performance improvements and adds a few API features to build messages more
Optional use of non-standard containers from Boost, Google Sparsehash
Custom allocator for FieldMap entries
Rewritten type convertors
Bitmap filters for validation checks on common fields
Streamlined tx/rx pipelines to avoid object copying
Optional short string optimization for glibc builds
Partial field checksum calculation at compile time
Optimized field sorting functions
File IO via direct OS calls
... and a lot of other miscellaneous tweaks including those from pending
patches on sourceforge by Viktor Pogrebnyak and others.
FieldMap::setField gets a template overload
addGroup returns a reference to the added FieldMap
Virtual destructor has been removed from DateTime class
Removal/replacement of low-level interfaces here and there
Field types get a nested Pack type for faster field construction
Floating point type serialization can be performed with explicit rounding
Logging and message store callbacks invoked with data in scatter-gather
buffers. If not overloaded these call original callbacks with data copied
to a string object.
Overall effect is 2-10 times improvement in the components of the
performance test benchmark with corresponding overall latency reduction and
Some of these changes can possibly end up in the mainline over time however
long and arduous may be the wait.
This has been tested to some extent on CentOS 6 and Windows 8, however
there could be serious bugs not detected by the unit testing framework, so
usual caveats apply.