Jason McGuiness

Finance & Banking

Information & Communications Technology

C++

Jason McGuiness

Count-Zero Limited

Jason is a contract programmer in C++ on Linux. With over 15 years experience, including programming prototype super-computers, but mainly in finance, now focussing on low-latency and HFT software, their architectures and the issues arising from them. I am also actively involved with the UK C++ Panel and the ACCU to maintain my skill-set.

Current sessions

Part I: Micro-Optimisation in C++: HFT and Beyond

High-Frequency Trading (HFT) and low-latency trading are becoming one of the few preserves of C++. The fact that it is amenable to extensive optimisation, including micro-optimisations, has made it highly effective, some of the major trading systems are hybrid FGPA/C++ solutions or native C++ solutions.

I shall provide an analysis of some micro-optimisation techniques that have been successfully used, but also an investigation of the pitfalls that may arise. For example: Performance anomalies lead to a discovery of quirks in generated assembler due to different compiler versions. Exactly what is static branch-prediction, and how is it (ab)used? Why is counting the number of set bits of the remotest interest? And the "curious case of the switch-statement" will be investigated.
Finally the performance of a fully-functional FIX-to-MIT/BIT format exchange link that uses all of these techniques will be examined.


Part II: Micro-Optimisation in C++: HFT and Beyond

High-Frequency Trading (HFT) and low-latency trading are becoming one of the few preserves of C++.
The fact that it is amenable to extensive optimisation, including micro-optimisations, has made it highly effective, some of the major trading systems are hybrid FGPA/C++ solutions or native C++ solutions.
I shall provide an analysis of some micro-optimisation techniques that have been successfully used, but also an investigation of the pitfalls that may arise. For example: Performance anomalies lead to a discovery of quirks in generated assembler due to different compiler versions. Exactly what is static branch-prediction, and how is it (ab)used? Why is counting the number of set bits of the remotest interest? And the "curious case of the switch-statement" will be investigated.
Finally the performance of a fully-functional FIX-to-MIT/BIT format exchange link that uses all of these techniques will be examined.


A Performance Analysis of a Trading System over Compliers and O/Ss and Spectre & Meltdown.

High-Frequency Trading (HFT) and low-latency trading are a major preserve of C++. The fact that it is amenable to extensive optimisation, including micro-optimisations, has made it highly effective. Also the impact of hardware and O/S upon such performance-critical systems are other major factors that C++ can build upon.

Continued demand has meant this talk is updated with results from the latest versions of G++ and Clang! The talk shall cover, amongst other items: an analysis of some micro-optimisation techniques with particular focus on the quirks in generated assembler due to different compiler versions. Exactly what is static branch-prediction, and how is it (ab)used? Followed on by the "curious case of the switch-statement". All of these, and more, have been successfully implemented in a simple FIX-to-MIT/BIT trading system, for which the performance shall be analysed. Moreover the impact of selected O/Ss upon performance shall be discussed. Much has been written and speculated upon the mitigations for Spectre and Meltdown upon performance. I shall present results that appear to contradict the currently-propounded beliefs of some major organisations.


A Performance Analysis of a Trading System over Compilers and O/Ss and Spectre & Meltdown.

High-Frequency Trading (HFT) and low-latency trading are a major preserve of C++. The fact that it is amenable to extensive optimisation, including micro-optimisations, has made it highly effective. Also the impact of hardware and O/S upon such performance-critical systems are other major factors that C++ can build upon.