Modèles C++ pour les applications à faible latence, y compris le trading à haute fréquence
(arxiv.org)Modèles de conception pour les applications C++ à faible latence
- Auteurs : Paul Bilokon, Burak Gunduz
- Date de soumission : 8 septembre 2023
- Sujet : optimisation du code à faible latence, avec un accent particulier sur les systèmes de trading à haute fréquence (HFT)
Contributions principales
- Création d'un dépôt de programmation à faible latence : guide pratique incluant un benchmarking statistique rigoureux
- Optimisation d'une stratégie d'arbitrage statistique market neutral : améliorations significatives en vitesse et en rentabilité
- Implémentation en C++ du modèle Disruptor : meilleures performances que les méthodes de mise en file d'attente traditionnelles
Métriques d'évaluation
- vitesse
- utilisation du cache
- significativité statistique, etc.
Technologies clés
- Cache warming : réduction de la latence grâce à l'initialisation du cache
- Constexpr : amélioration des performances grâce à l'évaluation des constantes à la compilation
Orientations futures
- extension du dépôt
- test des algorithmes de trading optimisés dans un environnement de trading en temps réel
- intégration du modèle Disruptor et des algorithmes de trading pour un benchmarking système complet
Public visé
- praticiens du monde académique et de l'industrie
Le résumé de GN⁺
Cet article traite de modèles de conception destinés à améliorer les performances des applications à faible latence, en particulier des systèmes de trading à haute fréquence. Le dépôt de programmation à faible latence et l'implémentation du modèle Disruptor constituent des guides utiles pour les praticiens. Des techniques comme le cache warming et constexpr contribuent fortement à réduire la latence. Cet article sera très utile à celles et ceux qui s'intéressent à l'optimisation des performances.
1 commentaires
Commentaire Hacker News
Il s’agit d’une brève introduction au sujet
Les étudiants de premier cycle connaissent déjà les éléments de base de l’optimisation des performances
Il est surprenant que la dégradation des performances due au false sharing ne soit pas abordée
Il est également surprenant que les attributs d’indication d’optimisation (
[[likely]],[[unlikely]]) ne soient pas évoquésLes aspects avancés de l’optimisation des performances ne sont pas traités
Ce dont un programmeur bas niveau a besoin, c’est d’une vigilance constante face aux allocations, copies et autres opérations inutiles
En écrivant un serveur à faible latence, on se rend compte que les opérations d’E/S vectorielles sont plus lentes que la copie de petits objets dans un buffer contigu
Les résultats de test fournissent une statistique t et une valeur p
Cette partie semble avoir été rédigée à l’aide d’un LLM
L’exemple consistant à analyser cinq ans de cours de clôture quotidiens et à calculer un spread avec une latence de 65 microsecondes paraît étrange
Partage d’une implémentation de bourse écrite en C++
Écriture d’une bibliothèque de logging en C++
L’efficacité du dispatch à la compilation vient du fait que la décision d’appel de fonction est prise à l’étape de compilation
Partage d’une présentation de la CppCon 2017
Certains s’interrogent sur la raison d’être du trading à haute fréquence