Designmuster für C++-Low-Latency-Anwendungen
- Autoren: Paul Bilokon, Burak Gunduz
- Eingereicht am: 8. September 2023
- Thema: Optimierung von Low-Latency-Code mit besonderem Schwerpunkt auf Hochfrequenzhandelssystemen (HFT)
Wichtige Beiträge
- Erstellung eines Low-Latency-Programming-Repositorys: Praktischer Leitfaden einschließlich strenger statistischer Benchmarks
- Optimierung einer marktneutralen statistischen Arbitrage-Strategie: Deutliche Verbesserungen bei Geschwindigkeit und Rentabilität
- C++-Implementierung des Disruptor-Musters: Leistungssteigerung gegenüber traditionellen Queueing-Methoden
Bewertungsmetriken
- Geschwindigkeit
- Cache-Nutzung
- statistische Signifikanz usw.
Zentrale Techniken
- Cache-Warming: Verringerung der Latenz durch Initialisierung des Caches
- Constexpr: Leistungssteigerung durch Auswertung konstanter Ausdrücke zur Compile-Zeit
Zukünftige Ausrichtung
- Erweiterung des Repositorys
- Test der optimierten Handelsalgorithmen in Echtzeit-Handelsumgebungen
- Integration des Disruptor-Musters und der Handelsalgorithmen für ein umfassendes System-Benchmarking
Zielpublikum
- Praktiker in Wissenschaft und Industrie
Zusammenfassung von GN⁺
Diese Arbeit behandelt Designmuster zur Verbesserung der Leistung von Low-Latency-Anwendungen, insbesondere in Hochfrequenzhandelssystemen. Das Low-Latency-Programming-Repository und die Implementierung des Disruptor-Musters dürften für Praktiker ein nützlicher Leitfaden sein. Techniken wie Cache-Warming und constexpr tragen wesentlich zur Verringerung der Latenz bei. Diese Arbeit dürfte für alle, die sich für Performance-Optimierung interessieren, äußerst aufschlussreich sein.
1 Kommentare
Hacker-News-Kommentar
Eine kurze Einführung in das Thema
Studierende im Grundstudium kennen die grundlegenden Elemente der Performance-Optimierung bereits
Überraschend ist, dass false sharing als Ursache für Performance-Einbußen nicht behandelt wird
Ebenso überraschend ist, dass Optimierungs-Hint-Attribute wie
[[likely]]und[[unlikely]]nicht behandelt werdenFortgeschrittene Elemente der Performance-Optimierung werden nicht behandelt
Was Low-Latency-Programmierer brauchen, ist Wachsamkeit gegenüber unnötigen Allokationen, Kopien usw.
Beim Schreiben eines Low-Latency-Servers wurde klar, dass Vektor-IO-Operationen langsamer sind, als kleine Objekte in einen zusammenhängenden Puffer zu kopieren
Die Testergebnisse liefern t-Statistik und p-Wert
Dieser Teil wirkt, als sei er mit einem LLM geschrieben worden
Das Beispiel, bei dem Schlusskurse einmal täglich über fünf Jahre analysiert und Spreads mit 65 Mikrosekunden Latenz berechnet werden, wirkt seltsam
Es wird eine in C++ geschriebene Implementierung einer Aktienbörse geteilt
Es wurde eine C++-Logging-Bibliothek geschrieben
Die Effizienz von Compile-Time-Dispatch ergibt sich daraus, dass die Entscheidung über den Funktionsaufruf bereits beim Kompilieren getroffen wird
Es wird ein Vortrag von der CppCon 2017 geteilt
Es wird infrage gestellt, ob es überhaupt einen Grund für die Existenz von Hochfrequenzhandel gibt