-
Notifications
You must be signed in to change notification settings - Fork 0
Performance
shinyashen edited this page Sep 17, 2026
·
27 revisions
English | 中文
-
微基准:
PerfReportTest,单 JVM 5 轮独立 fixture(每轮真冷,不共享缓存),全样本池化,报告中位数与最小值;严肃结论至少 2 次 JVM 取最小值(hotMin对调度噪声最稳); - 能力面:闪电套件 36 场景 × 3 库存模式(每场景单次执行,family 首场景含首次样板编译 + JIT 预热——生产端预编译 mixin 已消除,属测量口径)+ 边界套件 38 例;
-
informational 永绿:性能测试只断言正确性不变量,耗时打印为
[perf]行,不断言墙钟(CI 机器速度不定); - 发版自动基准:每次 Release 时 CI 自动构建并把最新基准写入本页下方区块(GitHub runner 环境,仅供版本间趋势对比)。
v1.1.0 · 2026-09-12 · GitHub Actions runner (ubuntu-latest, JDK 25) — values are for cross-release trend comparison only
Tests: 209 (OK)
| Suite | Result |
|---|---|
| Lightning benchmark | 39/39 SUPPORTED, falsePositive=0, engineError=0, timeout=0, total 118.4 ms |
| Boundary benchmark | 37/37 ok (feasible=36) |
Micro-benchmarks
[perf] case=fib24x1e9empty rounds=5 coldMedian=0.912ms coldMin=0.687ms hotMedian=0.475ms hotMin=0.233ms (150 hot samples)
[perf] case=conversionRing cold=1.298ms hotMedian=0.273ms hotMin=0.243ms (25 hot samples)
[perf] case=solverFib12Minimum cold=6.577ms hotMedian=1.946ms hotMin=1.078ms (15 hot samples)
[perf] case=fib32x1e9 rounds=5 coldMedian=1.053ms coldMin=0.873ms hotMedian=0.440ms hotMin=0.288ms (100 hot samples)
[perf] case=deadCycleGuard rounds=5 ringMedian=5.12us ringMin=2.85us chain24Median=12.70us chain24Min=6.97us (10000 samples each)
忠实 CPU 副本改为步内批量点火(判定逐位等价,见 1.2.0 CHANGELOG)后的闪电套件 36 例实测:
全套件合计 173–194 ms(三次强制重跑;每例带判定门副本 + 任务序构造 + 全部样板冷编译)
裁定:36/36 干净判定 —— supported=36, falsePositive=0, engineError=0, timeout=0(初测 supported=34+2 项宿主变体路由 FALSE_POSITIVE,已按 1.12 真实形状修复:宿主复用工具翻译为通配耐久合成配方,详见 Architecture 第 3 节)
对照:v1.1.0 同机基线 195.6 ms/39 例(无判定门);判定门上线后批量点火前 3303–3455 ms
要点:
- single-dag/fibonacci 三例(深度 32,每例计划合成总数 3,524,577):批量点火前 1036–1119 ms(判定门逐火副本占 92%+),点火后 8.1 / 11.9 / 8.2 ms——副本从 O(合成总数) 降到 O(任务×步),3.5M 次合成的重放 ~0.1 ms;
- 其余 33 例 ±2 ms 内不变(判定门/自检在小型计划上的固定价格;多例快于 v1.1.0);
- 首例 single-dag/dispersed/missing ~56 ms 为 JVM 类加载预热,一次性;
- 微基准(VM 计算路径,不经过副本)与历史值同带:hotMedian fib24×10^9 空库存 0.75 ms、solverFib12 全管线 3.5 ms;
- 2 个 ENGINE_TIMEOUT/NON_COOPERATIVE 状态随之消失——36 例全部被判定门干净裁定。
测试 190+ 失败 0 | 闪电 39/39 SUPPORTED,合计 118.0~132.5 ms | 边界 37/37,64 ms
对照 1.21 基线(2026-08-09):39 例 38 SUPPORTED + 1 FALSE_POSITIVE(本移植已关闭)
微基准(两轮 JVM,斜杠分隔):
| 用例 | coldMedian | hotMedian | hotMin | 说明 |
|---|---|---|---|---|
| fib32 × 10^9 | 1.6 / 1.7 ms | 0.59 / 0.59 ms | 0.46 / 0.33 ms | 需求聚合 O(patterns) + bundle 回放 |
| fib24 × 10^9 空库存 | 1.4 / 1.4 ms | 0.63 / 0.60 ms | 0.48 / 0.40 ms | 可合成中间项绝不报缺 |
| conversionRing | 0.77 / 1.27 ms | 0.39 / 0.31 ms | 0.30 / 0.21 ms | 换算环 + 库存感知 |
| solverFib12Minimum 全管线 | 3.4 / 3.8 ms | 3.6 / 3.3 ms | 3.1 / 2.7 ms | greedy + 2^10 枚举 + 精修 + 确认 |
| 死环守卫单次 | — | 环 9.7 / 8.8 μs;链 23.6 / 22.5 μs | 环 4.8 / 4.6 μs | 单候选场景零成本 |
36 场景中少数几例 >5ms:首例 ~56–62 ms 为 JVM/类加载预热(一次性),其余为每场景样板冷编译口径——生产端预编译 mixin 已消除。
| 轮次 | 内容 | 效果 |
|---|---|---|
| 基线 | 1.21 → 1.12 移植完成,全部能力对齐 | 功能等价,性能待调 |
| P0–P3 | 求解器快路径(long[] 级联 + 库存预读)、计划记忆化 + 版本门控、resolverCache 跨 pass | solver hot 8.9 → 4.3 ms;重复请求毫秒级 → 微秒级 |
| 确认守卫 + 死环单候选早退 | 模型无改善跳过确认重放;无争用跳过图分析 | 闪电合计 196.1 → 132.5 ms(≈ -32%);solver cold 8.0 → 3.4 ms |
| 模糊族两层缓存 | sandbox 族列表按键记忆 + VM 合成族按键记忆 | fuzzy/missing 17.7 → 4.75 ms(-73%);闪电合计 → 118 ms |
| GAP-2(T2.5) | 替换组可制造变体解析 | 正确性修复,无性能回退 |
结论:引擎常规路径与求解器已接近当前架构下限,引擎侧优化收官。
-
BenchSimulationState的模拟插入物跨 execute 残留——多请求测试每个请求用新 sim 实例; - 构造测试链检查孤儿分支(曾有 m5/m6 不在链上、leaf 永不消耗而断言 0"通过"的乌龙);
- 模糊场景耗时对比注意 suite 的 family 冷启动口径(首场景含首次编译 + JIT 预热)。
相关链接