这些数字测量 Rust 引擎热路径 - parse、state-cache 写入、完整流水线 - 全部进程内,全部单调时钟。不包括网络往返、交易所 WS 延迟或经纪商成交时间。每个交易所的网络延迟单独测量,记为 recv_wall_ns − state_cache_updated_ns(recv 减去 state-updated)。完整分解请参阅延迟矩阵文档。
基于 MarketState::update_ticker_owned 个89,033 样本的直方图(引擎 0.4.48)- 纳秒,进程内单调时钟
延迟矩阵中全部七项指标(引擎 0.4.48)。状态写入在纳秒级;parse + end-to-end 在微秒级。全部进程内,无网络。
| 指标 | n | p50 | p99 | 备注 |
|---|---|---|---|---|
state_ticker_ns | 89,033 | 310 ns | 1.95 µs | 单次行情状态缓存写入。引擎工作的最小单元 - 将一个交易对的价格、成交量和时间戳写入市场状态。这是 310 ns 核心指标。 |
state_mark_price_ns | 120 | 2.15 µs | 3.73 µs | 标记价格状态写入。比行情写入略重, 标记价格携带额外字段(资金费率、指数价格)写入状态。 |
state_order_update_ns | 3,458 | 3.69 µs | 13.86 µs | 订单生命周期状态写入:新建、部分成交、完全成交、已取消。每次状态转换会更新订单表和每个交易对的订单索引。 |
state_ob_snap_ns | 16,406 | 4.44 µs | 17.42 µs | 完整订单簿快照写入。在一次原子操作中替换某交易对的全部买卖挂单。比增量更重,因为需要重写完整深度。 |
state_ob_delta_ns | 102,549 | 5.51 µs | 16.34 µs | 订单簿增量。将一侧的价格档位更新应用到实时挂单。比快照更轻;大多数逐笔更新都是增量。 |
parse_ns | 176,555 | 1.76 µs | 77.95 µs | 完整 WS 帧 parse:JSON 或二进制解码、消息类型路由、交易对查找。引擎在状态写入前解析每一帧。这是纯解析成本。 |
end_to_end_ns | 176,555 | 14.40 µs | 248.96 µs | 端到端流水线:parse + 状态写入,从原始帧到更新后市场状态的完整进程内热路径。14.4 µs 核心指标即为此数值。 |
310 ns 核心指标在固定的 Intel Xeon 8369B(A 级)上测量。亚微秒 p50 是引擎级硬件的决定性特征。受限笔记本或共享虚拟机可能超过 1 µs - 这反映的是硬件性能,而非引擎本身。
| 层级 | 硬件 | 配置 | p50 | p95 |
|---|---|---|---|---|
| A | Intel Xeon 8369B(Ice Lake-SP) | Linux 5.15,固定核心,performance governor,Rust 1.78 | 310 ns | 980 ns |
| B | AMD EPYC 7763 / Xeon Gold 6338 | Linux 5.15+,performance governor,Rust 1.78 | 350–500 ns | 0.7–1.2 µs |
| C | Apple M2 / M3 MacBook | macOS 14+,arm64,Rust 1.78 | 250–450 ns | 0.6–1.1 µs |
| D | Intel i7-12700H / Ryzen 9 7945HX 笔记本 | Linux/Win11,未固定,Rust 1.78 | 400–650 ns | 0.8–1.4 µs |
测试套件是独立的 Rust crate。无需克隆完整平台,无需外部服务。
# 1. Clone the public OSS repo git clone https://github.com/melaya-labs/melaya.git cd melaya/benchmarks/engine # 2. Run the criterion bench (~100k iterations, ~30 seconds) cargo bench --bench state_ticker # 3. Read the per-iteration CSV + summary cat results/state_ticker_ns.csv | head cat results/summary.json
A 级硬件上总实际耗时不到 30 秒。criterion 套件生成 results/state_ticker_ns.csv + results/summary.json。完整方法论见测试套件 README。