Performance improvements

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Performance improvements

Alexander Korobka
QuickFIX Documentation:
QuickFIX Support:


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.

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

   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.


October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
Quickfix-developers mailing list
[hidden email]