Skip to content

Commit e2ce485

Browse files
docs: update build performance benchmarks (2.5.1) (#189)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 9033cdc commit e2ce485

2 files changed

Lines changed: 98 additions & 27 deletions

File tree

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -423,14 +423,14 @@ Self-measured on every release via CI ([build benchmarks](generated/BUILD-BENCHM
423423

424424
| Metric | Latest |
425425
|---|---|
426-
| Build speed (native) | **2 ms/file** |
427-
| Build speed (WASM) | **8.4 ms/file** |
426+
| Build speed (native) | **1.9 ms/file** |
427+
| Build speed (WASM) | **7.8 ms/file** |
428428
| Query time | **2ms** |
429-
| No-op rebuild (native) | **4ms** |
430-
| 1-file rebuild (native) | **97ms** |
431-
| Query: fn-deps | **2.1ms** |
432-
| Query: path | **1.2ms** |
433-
| ~50,000 files (est.) | **~100.0s build** |
429+
| No-op rebuild (native) | **3ms** |
430+
| 1-file rebuild (native) | **93ms** |
431+
| Query: fn-deps | **1.8ms** |
432+
| Query: path | **1ms** |
433+
| ~50,000 files (est.) | **~95.0s build** |
434434

435435
Metrics are normalized per file for cross-version comparability. Times above are for a full initial build — incremental rebuilds only re-parse changed files.
436436

generated/BUILD-BENCHMARKS.md

Lines changed: 91 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ Metrics are normalized per file for cross-version comparability.
55

66
| Version | Engine | Date | Files | Build (ms/file) | Query (ms) | Nodes/file | Edges/file | DB (bytes/file) |
77
|---------|--------|------|------:|----------------:|-----------:|-----------:|-----------:|----------------:|
8+
| 2.5.1 | native | 2026-03-01 | 126 | 1.9 ↓5% | 2.1 ↓12% | 6.5 ~ | 11.1 ~ | 5526 ~ |
9+
| 2.5.1 | wasm | 2026-03-01 | 126 | 7.8 ↓7% | 3 ↓14% | 6.5 ~ | 11.1 ~ | 5526 ~ |
810
| 2.5.0 | native | 2026-02-28 | 123 | 2 | 2.4 | 6.5 | 11.1 | 5595 |
911
| 2.5.0 | wasm | 2026-02-28 | 123 | 8.4 ↑65% | 3.5 ↑59% | 6.5 ~ | 11.1 ↑4% | 5595 ↑19% |
1012
| 2.4.0 | wasm | 2026-02-28 | 123 | 5.1 ↓23% | 2.2 ↑5% | 6.5 ↑12% | 10.7 ↑18% | 4695 ↑22% |
@@ -21,51 +23,53 @@ Metrics are normalized per file for cross-version comparability.
2123

2224
| Metric | Value |
2325
|--------|-------|
24-
| Build time | 241ms |
26+
| Build time | 236ms |
2527
| Query time | 2ms |
26-
| Nodes | 801 |
27-
| Edges | 1,365 |
28-
| DB size | 672 KB |
29-
| Files | 123 |
28+
| Nodes | 817 |
29+
| Edges | 1,393 |
30+
| DB size | 680 KB |
31+
| Files | 126 |
3032

3133
#### WASM
3234

3335
| Metric | Value |
3436
|--------|-------|
35-
| Build time | 1.0s |
36-
| Query time | 4ms |
37-
| Nodes | 801 |
38-
| Edges | 1,365 |
39-
| DB size | 672 KB |
40-
| Files | 123 |
37+
| Build time | 979ms |
38+
| Query time | 3ms |
39+
| Nodes | 817 |
40+
| Edges | 1,393 |
41+
| DB size | 680 KB |
42+
| Files | 126 |
4143

4244
### Build Phase Breakdown (latest)
4345

4446
| Phase | Native | WASM |
4547
|-------|-------:|-----:|
46-
| Parse | 133 ms | 655.7 ms |
47-
| Insert nodes | 13 ms | 18.8 ms |
48-
| Resolve imports | 9.7 ms | 13 ms |
49-
| Build edges | 57.4 ms | 62.8 ms |
50-
| Structure | 3.8 ms | 10.2 ms |
51-
| Roles | 5.3 ms | 8.5 ms |
52-
| Complexity | 5.1 ms | 240.7 ms |
48+
| Parse | 138.2 ms | 621.1 ms |
49+
| Insert nodes | 12.1 ms | 16.7 ms |
50+
| Resolve imports | 5.5 ms | 10.2 ms |
51+
| Build edges | 56.9 ms | 60.5 ms |
52+
| Structure | 3.6 ms | 7.2 ms |
53+
| Roles | 4.7 ms | 4.9 ms |
54+
| Complexity | 4.7 ms | 232.5 ms |
5355

5456
### Estimated performance at 50,000 files
5557

5658
Extrapolated linearly from per-file metrics above.
5759

5860
| Metric | Native (Rust) | WASM |
5961
|--------|---:|---:|
60-
| Build time | 100.0s | 420.0s |
61-
| DB size | 266.8 MB | 266.8 MB |
62+
| Build time | 95.0s | 390.0s |
63+
| DB size | 263.5 MB | 263.5 MB |
6264
| Nodes | 325,000 | 325,000 |
6365
| Edges | 555,000 | 555,000 |
6466

6567
### Incremental Rebuilds
6668

6769
| Version | Engine | No-op (ms) | 1-file (ms) |
6870
|---------|--------|----------:|-----------:|
71+
| 2.5.1 | native | 3 ↓25% | 93 ↓4% |
72+
| 2.5.1 | wasm | 4 ~ | 324 ~ |
6973
| 2.5.0 | native | 4 | 97 |
7074
| 2.5.0 | wasm | 4 ↓20% | 324 ↑69% |
7175
| 2.4.0 | wasm | 5 | 192 |
@@ -74,6 +78,8 @@ Extrapolated linearly from per-file metrics above.
7478

7579
| Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) |
7680
|---------|--------|------------:|--------------:|----------:|----------:|
81+
| 2.5.1 | native | 1.8 ↓14% | 1.3 ↓19% | 1 ↓17% | 1 ↓9% |
82+
| 2.5.1 | wasm | 1.8 ↓18% | 1.3 ↓19% | 1 ↓17% | 1.1 ~ |
7783
| 2.5.0 | native | 2.1 | 1.6 | 1.2 | 1.1 |
7884
| 2.5.0 | wasm | 2.2 ↑340% | 1.6 ↑220% | 1.2 | 1.1 ↑22% |
7985
| 2.4.0 | wasm | 0.5 | 0.5 | null | 0.9 |
@@ -100,6 +106,71 @@ extractor is needed to recover the regression.
100106

101107
<!-- BENCHMARK_DATA
102108
[
109+
{
110+
"version": "2.5.1",
111+
"date": "2026-03-01",
112+
"files": 126,
113+
"wasm": {
114+
"buildTimeMs": 979,
115+
"queryTimeMs": 3,
116+
"nodes": 817,
117+
"edges": 1393,
118+
"dbSizeBytes": 696320,
119+
"perFile": {
120+
"buildTimeMs": 7.8,
121+
"nodes": 6.5,
122+
"edges": 11.1,
123+
"dbSizeBytes": 5526
124+
},
125+
"noopRebuildMs": 4,
126+
"oneFileRebuildMs": 324,
127+
"queries": {
128+
"fnDepsMs": 1.8,
129+
"fnImpactMs": 1.3,
130+
"pathMs": 1,
131+
"rolesMs": 1.1
132+
},
133+
"phases": {
134+
"parseMs": 621.1,
135+
"insertMs": 16.7,
136+
"resolveMs": 10.2,
137+
"edgesMs": 60.5,
138+
"structureMs": 7.2,
139+
"rolesMs": 4.9,
140+
"complexityMs": 232.5
141+
}
142+
},
143+
"native": {
144+
"buildTimeMs": 236,
145+
"queryTimeMs": 2.1,
146+
"nodes": 817,
147+
"edges": 1393,
148+
"dbSizeBytes": 696320,
149+
"perFile": {
150+
"buildTimeMs": 1.9,
151+
"nodes": 6.5,
152+
"edges": 11.1,
153+
"dbSizeBytes": 5526
154+
},
155+
"noopRebuildMs": 3,
156+
"oneFileRebuildMs": 93,
157+
"queries": {
158+
"fnDepsMs": 1.8,
159+
"fnImpactMs": 1.3,
160+
"pathMs": 1,
161+
"rolesMs": 1
162+
},
163+
"phases": {
164+
"parseMs": 138.2,
165+
"insertMs": 12.1,
166+
"resolveMs": 5.5,
167+
"edgesMs": 56.9,
168+
"structureMs": 3.6,
169+
"rolesMs": 4.7,
170+
"complexityMs": 4.7
171+
}
172+
}
173+
},
103174
{
104175
"version": "2.5.0",
105176
"date": "2026-02-28",

0 commit comments

Comments
 (0)