NanoMatch
NanoMatch 是使用现代 C++20 构建的高性能限价订单簿与撮合引擎。它模拟金融交易所核心操作,以价格与时间优先匹配买卖订单,每秒可执行数百万操作。
01 / 概览
- 01C++20
- 02CMake 3.20+
- 03Google Test 1.17
- 04GitHub Actions CI/CD
- 05AddressSanitizer
- 06UBSan
问题
金融交易所需要超低延迟的订单撮合。要从系统层面理解引擎,必须在真实性能约束下从零构建。
解决方案概述
- 实现价格与时间优先 FIFO 撮合,支持 Limit、Market、IOC 和 FOK 订单。
- 通过哈希表索引实现 O(1) 取消和修改订单。
- 构建自定义内存池,移除热路径的堆分配开销。
- 为每个交易符号提供独立订单簿,支持多标的。
02 / 证据
证明与验证
- 吞吐量:每秒 1M+ 订单,单线程合成基准。
- 完整测试套件含 p50/p99 延迟基准。
- 18 个测试套件中的 60+ 单元测试全部通过。
- 每次推送执行 ASan、UBSan、cppcheck 和 clang-format。
03 / 方法
构建
技术栈
- C++20
- CMake 3.20+
- Google Test 1.17
- GitHub Actions CI/CD
- AddressSanitizer
- UBSan
- 价格与时间优先 FIFO 撮合。
- 4 种订单:Limit、Market、IOC、Fill-or-Kill。
- 通过哈希表 O(1) 取消或修改订单。
- 自定义内存池移除堆分配开销。
安全
- CI 使用 AddressSanitizer 与 UndefinedBehaviorSanitizer。
- 18 个套件中的 60+ 单元测试。
- 每次推送执行 cppcheck 静态分析。
- 无外部运行时依赖。