|
7 | 7 |
|
8 | 8 | ## 0. 一句话结论 |
9 | 9 |
|
10 | | -**目标达成,而且是通用的 —— 在两个独立工程上都成立:** |
| 10 | +**目标达成。** 同一份 pinned 源码(@8219584)、同一台机器、`eef8a4c` 上复测: |
| 11 | + |
| 12 | +| | schedule=off | schedule=on | 比值 | |
| 13 | +|---|---|---|---| |
| 14 | +| **gcc 16.1.0** | 80.58s | **35.13s** | **2.29×** | |
| 15 | +| **llvm 22.1.8** | 32.40s | **18.04s** | **1.80×** | |
| 16 | + |
| 17 | +**L1 与 L2 叠加**:gcc/off 80.58s → clang/on **18.04s = 4.47×**,远在 50s 线内。 |
| 18 | +两者正交 —— L1 换编译器(压常数),L2 改图的形状,所以相乘而不是相加。 |
| 19 | + |
| 20 | +拆分调度下 noop **重建 0 个产物**(`.o`/`.gcm`/`.pcm` 一个都没动)。 |
| 21 | + |
| 22 | +### 而且是通用的,不是把 mcpp 这一个工程调快 |
11 | 23 |
|
12 | 24 | | 工程 | 规模 | schedule=off | schedule=on | 比值 | |
13 | 25 | |---|---|---|---|---| |
14 | 26 | | **mcpp** | 138 模块 / 57k 行 | 79.9s | **34.80s** | **2.30×** | |
15 | 27 | | **xlings** | 110 模块 / 46k 行 | 112.92s | **33.41s** | **3.38×** | |
16 | 28 |
|
17 | | -xlings 是**独立作者、独立代码库**的对照(openxlings/xlings @ b1563fe)。 |
18 | | -两个工程都 noop 无重建(mcpp 0.21s;xlings 的 10.77s 全部是依赖解析开销, |
19 | | -`.ninja_log` 增量 **0 条边**)。 |
| 29 | +xlings 是**独立作者、独立代码库**的对照(openxlings/xlings @ b1563fe), |
| 30 | +效果比开发它的那个工程**更大**。两个工程都 noop 无重建 |
| 31 | +(mcpp 0.21s;xlings 的 10.77s 全部是依赖解析开销,`.ninja_log` 增量 **0 条边**)。 |
20 | 32 |
|
21 | 33 | ⚠️ xlings 那一栏有一处不对称:off 那次编译了 `mcpplibs.xpkg`(5 个单元), |
22 | 34 | on 那次命中了缓存。5 个单元相对 80s 的差值可以忽略,但记在这里而不是抹掉。 |
23 | 35 |
|
24 | | -另有 **L1(按次选工具链)**:`--toolchain llvm@22.1.8` 让 mcpp 81.83s → **32.61s(2.51×)**。 |
25 | | -与 L2 可叠加(一个改形状、一个压常数),尚未合测。 |
26 | | - |
27 | 36 | ⚠️ **修正一次错误归因。** 本文先前写「schedule 基础层导致段错误,已整批回退」。 |
28 | | -重新施加后逐条复现:**基础层 rc=0**(冷构建 82.27s、e2e 全过、policy 单测 8/8)。 |
29 | | -那两次崩溃用的二进制**都包含当时未提交的图拆分发射** —— 崩的是那部分。 |
30 | | -基础层已恢复,`auto` 改为 off、`on` 才启用拆分形状。 |
| 37 | +重新施加后逐条复现:**基础层 rc=0**。那两次崩溃用的二进制**都包含当时未提交的图拆分 |
| 38 | +发射** —— 崩的是那部分。基础层已恢复,`auto` 为 off、`on` 才启用拆分形状。 |
31 | 39 |
|
32 | 40 | --- |
33 | 41 |
|
|
0 commit comments