跳转至

性能基准

项目用 Criterion 微基准、可控多连接测试和 Linux 进程级启动基准分别观察 CPU、分配、并发尾延迟与启动资源。网络 RTT、市场状态和后端限流不应与 OpenD 本地 CPU 成本混为一谈。

基准套件

范围 命令 主要观察点
API key / 限额 cargo bench -p futu-auth --bench auth_bench hash-index lookup、共享 key generation、borrowed limit policy
行情缓存 cargo bench -p futu-cache --bench cache_lookup static/QOT cache hit、cache-key、ticker 窄读取
帧编解码 cargo bench -p futu-codec 44-byte header、frame encode/decode
加密 cargo bench -p futu-net AES ECB 典型 body 大小
SQLite cargo bench -p futu-gateway-core --bench stock_db_lookup 150k 行 code / warrant-owner 查询
遥测与 WS cargo bench -p futu-core --bench delay_statscargo bench -p futu-server --bench ingress_and_metrics delay counter contention、精确 latency ring、WS binary slicing

KeyStore::verify 使用按 hash 构建的不可变 generation,不随 key 数量线性扫描。行情和静态缓存也有独立 benchmark;旧文档中的固定微秒数字不再作为跨机器 SLO。

可比较运行

同一次裁决必须使用相同机器、Rust 工具链、Cargo profile 和 fixture。至少运行五个独立进程;Criterion 单进程内部 sample 不能替代独立进程。

# 保存同一源码/环境的基线
cargo bench -p futu-auth --bench auth_bench -- --save-baseline perf-before

# 产品改动后比较
cargo bench -p futu-auth --bench auth_bench -- --baseline perf-before

scripts/perf_acceptance.py 对机器可读结果做 fail-closed 裁决:缺 cell、少于五进程、machine/profile/input 不一致、置信区间重叠或明确回退都不能成为假绿。置信区间重叠时结果是 INCONCLUSIVE,不通过微调代码制造“提升”。

Linux 启动与资源边界

scripts/linux_stock_cache_benchmark.py 使用事故规模 stock cache,连续五次记录监听就绪、CPU、RSS、线程与文件描述符。previous release 与 candidate 都必须由调用者显式提供 archive、SHA-256 和完整 source SHA;脚本不再下载或固定比较旧的 v1.5.2。

候选还必须独立满足绝对边界:五次全部就绪、无超时/异常退出、TCP 最大 120 秒、P95 90 秒、RSS 不超过 2 GiB、就绪后平均 CPU 不超过 50%。相对更快不能覆盖绝对边界失败。

解释结果

  • 本地 cache API 可观察到微秒甚至更低的 CPU 差异,适合评估分配和锁竞争。
  • 会访问 Futu backend 的 API 通常由网络 RTT 主导;本地优化不能宣称降低 backend latency。
  • internal candidate 使用 release-ci(Thin LTO),本地 --release 使用完整 LTO;不同 profile 的数字不可直接比较。
  • benchmark 通过只证明指定机器和输入的性能合同,不等于五平台、真机行情/交易或 release-ready。

Criterion HTML 报告位于 target/criterion/report/index.html,该目录是本地产物,不提交到仓库。