[Quickfix-developers] Performance improvements
Brought to you by:
orenmnero
From: Alexander K. <ale...@gm...> - 2013-10-22 16:52:06
|
Hi, 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 efficiently. https://github.com/akorobka/quickfix/tree/quickerfix Main modifications 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 Non-rescanning parser 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. API changes 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 API extensions FieldMap::addField 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 throughput increase. 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. Cheers, Alexander |