Quickfix derivado con un gran número de optimizaciones, mucho más rápido que la versión actual, especialmente para los mensajes cortos. Incluye la aplicación de ejemplo de que las medidas de latencia en la interfaz de bucle invertido.
https://github.com/akorobka/quickfix/tree/quickerfix
Resumen de las mejoras
Hay varias cosas que tienen un impacto adverso en el desempeño de la actual implementación de referencia.
La mayoría de ellos tienen que ver con una gran cantidad de despedidos objeto de copia, las conversiones de tipo implícito y pequeño bloque de asignaciones de memoria. Estos cambios intentar reducir estos tanto como sea posible a través de un rediseño del objeto, el uso más eficiente de campo de los contenedores (Boost, Google Sparsehash) con una piscina de asignación y racionalización de Tx/Rx de tuberías.
Otros cambios son básicamente la fuerza bruta de las optimizaciones con un uso más eficiente de la serialización/deserialización de código, aportando cada uno de 0-20% para el total de la aceleración.
Extensiones
Cada tipo de campo se define un anidada tipo de Paquete que se puede utilizar en lugar de la construcción sobre el terreno cuando se añade un campo para el mensaje,
msg.setField( REVISIÓN::ClOrdID::Pack( "4" ) );
Doble campo de los constructores de obtener un bool opcional argumento que especifica si el valor debe ser redondeada.
msg.setField( REVISIÓN::DoubleField( campo, el valor, la precisión, true ) );
msg.setField( REVISIÓN::Precio( valor, precisión, true ) );
msg.setField( REVISIÓN::precio: Precio:Pack( valor, precisión, true ) );