Patrones de C++ para aplicaciones de baja latencia, incluido el trading de alta frecuencia
(arxiv.org)Patrones de diseño para aplicaciones de baja latencia en C++
- Autores: Paul Bilokon, Burak Gunduz
- Fecha de envío: 8 de septiembre de 2023
- Tema: Optimización de código de baja latencia, con énfasis especial en sistemas de trading de alta frecuencia (HFT)
Contribuciones principales
- Creación de un repositorio de programación de baja latencia: una guía práctica que incluye benchmarking estadístico riguroso
- Optimización de una estrategia de arbitraje estadístico neutral al mercado: mejoras significativas en velocidad y rentabilidad
- Implementación en C++ del patrón Disruptor: mejor rendimiento que los métodos tradicionales de encolado
Métricas de evaluación
- Velocidad
- Uso de caché
- Significancia estadística, etc.
Tecnologías principales
- Calentamiento de caché: reducción de la latencia mediante la inicialización de la caché
- Constexpr: mejora del rendimiento mediante evaluación de constantes en tiempo de compilación
Dirección futura
- Expansión del repositorio
- Pruebas de los algoritmos de trading optimizados en entornos de trading en tiempo real
- Integración del patrón Disruptor y los algoritmos de trading para un benchmarking integral del sistema
Lectores objetivo
- Profesionales de la academia y la industria
Resumen de GN⁺
Este artículo aborda patrones de diseño para mejorar el rendimiento de aplicaciones de baja latencia, especialmente sistemas de trading de alta frecuencia. El repositorio de programación de baja latencia y la implementación del patrón Disruptor pueden servir como una guía útil para profesionales. Técnicas como el calentamiento de caché y Constexpr contribuyen en gran medida a reducir la latencia. Este artículo será muy útil para quienes estén interesados en la optimización del rendimiento.
1 comentarios
Opiniones de Hacker News
Es una introducción breve al tema
Los estudiantes de pregrado ya conocen los elementos básicos de optimización de rendimiento
Sorprende que no se haya tratado el
false sharing, que es un factor de degradación del rendimientoTambién sorprende que no se hayan tratado atributos de pista de optimización como
[[likely]]y[[unlikely]]No se abordan elementos avanzados de optimización de rendimiento
Lo que necesita un programador de baja latencia es estar alerta ante asignaciones y copias innecesarias
Al escribir un servidor de baja latencia, se dio cuenta de que las operaciones de vector IO son más lentas que copiar objetos pequeños a un búfer contiguo
Los resultados de prueba proporcionan estadístico t y valor p
Esta parte parece haber sido escrita usando un LLM
El ejemplo de analizar el precio de cierre una vez al día durante 5 años y calcular el spread con una latencia de 65 microsegundos resulta extraño
Comparte una implementación de bolsa de valores escrita en C++
Escribió una biblioteca de logging en C++
La eficiencia del despacho en tiempo de compilación se debe a que la decisión de llamada de función se toma en la etapa de compilación
Comparte una presentación de CppCon 2017
Plantea la duda de si debería existir el trading de alta frecuencia