3、项目测试
约 762 字大约 3 分钟
2026-03-23
运行环境
本章节中 项目安装部署,我们已经介绍如何在docker环境中安装,编译,部署项目,因此在本章节中,直接开始做基准测试;
- 将 NASDAQ ITCH 样本数据下载到本地磁盘保存;
- 执行docker命令,运行docker容器:
docker run -it --rm -v /home/data:/home/app/CppTrader/data nocompilecpptrade-ubuntu-tools-22.04:1.0.0 /bin/bash运行docker容器时,将本地的数据集映射到容器内部供容器读取数据测试;映射代码-v /home/data:/home/app/CppTrader/data;
基准测试
NASDAQ ITCH handler
基准测试用于衡量纳斯达克 ITCH 处理器的性能。它展示了该处理器从输入流中解析并处理 ITCH 消息的速度;
cpptrader-performance-itch_handler 是一个性能基准测试程序,专门用于测试ITCH协议处理器的处理能力,ITCH协议包含多种消息类型,测试会分别评估不同消息的处理能力:
| 消息类型 | 消息代码 | 处理复杂度 | 典型占比 |
|---|---|---|---|
| 系统事件 | 'S' | 低 | 0.1% |
| 股票状态 | 'H' | 低 | 0.5% |
| 订单添加 | 'A' | 高 | 40% |
| 订单执行 | 'E' | 中 | 20% |
| 订单取消 | 'X' | 中 | 15% |
| 订单修改 | 'U' | 高 | 10% |
| 交易消息 | 'P' | 中 | 10% |
| 其他 | - | 低 | 4.4% |
测试数据下载地址:纳斯达克数据下载地址
./cpptrader-performance-itch_handler < ../data/01302019.NASDAQ_ITCH50测试结果:
ITCH processing...Done!
Errors: 0
Processing time: 56.765 s
Total ITCH messages: 368366634
ITCH message latency: 154 ns
ITCH message throughput: 6489296 msg/s测试结果表明:
- 处理时间:56.765 s
- 处理消息数量:368366634条
- ITCH 消息延迟时间:154 ns
- 应用吞吐量:6489296 msg/s
有关 NASDAQ ITCH handler 处理器代码设计请参考:NASDAQ ITCH handler
Market manager
市场管理器,用于处理订单簿和市场数据的关键模块。主要职责是管理和维护一个或多个交易品种的订单簿(Order Book),简单概括其职责为:
- 接收市场数据:从ITCH等数据源接收订单进入、取消、修改等原始消息
- 更新订单簿:将这些消息应用到内部维护的订单簿上,实时反映市场的深度情况。
- 触发交易事件:当买入订单和卖出订单的价格匹配时,MarketManager会驱动匹配引擎执行交易,并生成成交记录。
cpptrader-performance-market_manager性能测试工具能够测试应用处理订单操作(添加、减少、修改、删除、执行)以及构建订单簿的速度;
./cpptrader-performance-market_manager < ../data/01302019.NASDAQ_ITCH50执行结果:
ITCH processing...Done!
Errors: 0
Processing time: 5:32.846 m
Total ITCH messages: 368366634
ITCH message latency: 903 ns
ITCH message throughput: 1106716 msg/s
Total market updates: 788955229
Market update latency: 421 ns
Market update throughput: 2370327 upd/s
Market statistics:
Max symbols: 8713
Max order books: 8713
Max order book levels: 3143
Max order book orders: 3049
Max orders: 1742866
Order statistics:
Add order operations: 191919099
Update order operations: 6502763
Delete order operations: 191919099
Execute order operations: 8255881