中文

高频交易低延迟 C++ 中的半静态条件:优于分支预测提示

性能 2023-08-29 v1 编程语言

摘要

条件分支对代码优化提出了挑战,尤其在低延迟场景中。为获得更好性能,处理器利用专用硬件预测分支结果并推测执行后续指令,这是一种强大的优化手段。现代分支预测器采用复杂算法与启发式方法,利用历史数据与模式进行预测,且通常极为有效。因此,程序员在使用过短或过于可预测的合成数据对代码进行基准测试时,可能无意中低估了预测错误的代价。虽然消除分支未必总是可行,但 C++20 引入了 [[likely]] 与 [[unlikely]] 属性,使编译器能够对与可能执行路径相关的汇编代码进行局部优化。我们能否做得更好?本工作提出了一种称为半静态条件的新语言构造,使程序员能够通过修改底层可执行文件中的汇编代码,在运行时动态改变分支方向。随后,我们探讨了半静态条件优于传统条件分支的场景,突出了其在实时机器学习与高频交易中的潜在应用。在整个开发过程中,我们考量了性能、可移植性、语法与安全性等关键因素。

关键词

引用

@article{arxiv.2308.14185,
  title  = {Semi-static Conditions in Low-latency C++ for High Frequency Trading: Better than Branch Prediction Hints},
  author = {Paul Alexander Bilokon and Maximilian Lucuta and Erez Shermer},
  journal= {arXiv preprint arXiv:2308.14185},
  year   = {2023}
}