Skip to content

Commit 550b3b5

Browse files
docs: update build performance benchmarks (v2.4.0) (#150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 231e941 commit 550b3b5

2 files changed

Lines changed: 94 additions & 51 deletions

File tree

README.md

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

424424
| Metric | Latest |
425425
|---|---|
426-
| Build speed (native) | **2.1 ms/file** |
427-
| Build speed (WASM) | **6.4 ms/file** |
428-
| Query time | **2ms** |
429-
| ~50,000 files (est.) | **~105.0s build** |
426+
| Build speed (native) | **6.7 ms/file** |
427+
| Build speed (WASM) | **9.3 ms/file** |
428+
| Query time | **3ms** |
429+
| No-op rebuild (native) | **4ms** |
430+
| 1-file rebuild (native) | **374ms** |
431+
| Query: fn-deps | **2.1ms** |
432+
| Query: path | **1.2ms** |
433+
| ~50,000 files (est.) | **~335.0s build** |
430434

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

generated/BUILD-BENCHMARKS.md

Lines changed: 86 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +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.4.0 | native | 2026-02-26 | 109 | 2.1 ↑11% | 1.8 ↑20% | 5.9 ~ | 9.7 ↑7% | 4434 ↑15% |
9-
| 2.4.0 | wasm | 2026-02-26 | 109 | 6.4 ↓3% | 2.1 ~ | 5.9 ~ | 9.7 ↑7% | 4434 ↑15% |
8+
| 2.4.0 | native | 2026-02-27 | 122 | 6.7 ↑253% | 2.5 ↑67% | 6.4 ↑10% | 10.9 ↑20% | 5506 ↑43% |
9+
| 2.4.0 | wasm | 2026-02-27 | 122 | 9.3 ↑41% | 3.3 ↑57% | 6.4 ↑10% | 10.9 ↑20% | 5506 ↑43% |
1010
| 2.3.0 | native | 2026-02-24 | 99 | 1.9 ~ | 1.5 ↑7% | 5.8 ↑7% | 9.1 ~ | 3848 ~ |
1111
| 2.3.0 | wasm | 2026-02-24 | 99 | 6.6 ~ | 2.1 ↑11% | 5.8 ~ | 9.1 ↑3% | 3848 ~ |
1212
| 2.1.0 | native | 2026-02-23 | 92 | 1.9 ↓24% | 1.4 ↑17% | 5.4 ↑6% | 9.1 ↓47% | 3829 ↓14% |
@@ -20,47 +20,60 @@ Metrics are normalized per file for cross-version comparability.
2020

2121
| Metric | Value |
2222
|--------|-------|
23-
| Build time | 225ms |
24-
| Query time | 2ms |
25-
| Nodes | 644 |
26-
| Edges | 1,062 |
27-
| DB size | 472 KB |
28-
| Files | 109 |
29-
23+
| Build time | 813ms |
24+
| Query time | 3ms |
25+
| Nodes | 778 |
26+
| Edges | 1,333 |
27+
| DB size | 656 KB |
28+
| Files | 122 |
3029

3130
#### WASM
3231

3332
| Metric | Value |
3433
|--------|-------|
35-
| Build time | 702ms |
36-
| Query time | 2ms |
37-
| Nodes | 644 |
38-
| Edges | 1,062 |
39-
| DB size | 472 KB |
40-
| Files | 109 |
34+
| Build time | 1.1s |
35+
| Query time | 3ms |
36+
| Nodes | 778 |
37+
| Edges | 1,333 |
38+
| DB size | 656 KB |
39+
| Files | 122 |
40+
41+
### Build Phase Breakdown (latest)
42+
43+
| Phase | Native | WASM |
44+
|-------|-------:|-----:|
45+
| Parse | 108.1 ms | 644.1 ms |
46+
| Insert nodes | 14.5 ms | 14.9 ms |
47+
| Resolve imports | 9.9 ms | 13.1 ms |
48+
| Build edges | 63.9 ms | 59 ms |
49+
| Structure | 3.9 ms | 7.2 ms |
50+
| Roles | 4.5 ms | 5.1 ms |
51+
| Complexity | 588.4 ms | 354.2 ms |
4152

4253
### Estimated performance at 50,000 files
4354

4455
Extrapolated linearly from per-file metrics above.
4556

4657
| Metric | Native (Rust) | WASM |
4758
|--------|---:|---:|
48-
| Build time | 105.0s | 320.0s |
49-
| DB size | 211.4 MB | 211.4 MB |
50-
| Nodes | 295,000 | 295,000 |
51-
| Edges | 485,000 | 485,000 |
59+
| Build time | 335.0s | 465.0s |
60+
| DB size | 262.5 MB | 262.5 MB |
61+
| Nodes | 320,000 | 320,000 |
62+
| Edges | 545,000 | 545,000 |
5263

5364
### Incremental Rebuilds
5465

5566
| Version | Engine | No-op (ms) | 1-file (ms) |
5667
|---------|--------|----------:|-----------:|
57-
| 2.4.0 | wasm | 5 | 233 |
68+
| 2.4.0 | native | 4 | 374 |
69+
| 2.4.0 | wasm | 4 | 348 |
5870

5971
### Query Latency
6072

6173
| Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) |
6274
|---------|--------|------------:|--------------:|----------:|----------:|
63-
| 2.4.0 | wasm | 1.8 | 1.4 | 0.8 | 0.8 |
75+
| 2.4.0 | native | 2.1 | 1.6 | 1.2 | 1.1 |
76+
| 2.4.0 | wasm | 2.1 | 1.6 | 1.2 | 1.2 |
6477

6578
<!-- NOTES_START -->
6679
### Notes
@@ -86,40 +99,66 @@ extractor is needed to recover the regression.
8699
[
87100
{
88101
"version": "2.4.0",
89-
"date": "2026-02-26",
90-
"files": 109,
102+
"date": "2026-02-27",
103+
"files": 122,
91104
"wasm": {
92-
"buildTimeMs": 702,
93-
"queryTimeMs": 2.1,
94-
"nodes": 644,
95-
"edges": 1062,
96-
"dbSizeBytes": 483328,
105+
"buildTimeMs": 1130,
106+
"queryTimeMs": 3.3,
107+
"nodes": 778,
108+
"edges": 1333,
109+
"dbSizeBytes": 671744,
97110
"perFile": {
98-
"buildTimeMs": 6.4,
99-
"nodes": 5.9,
100-
"edges": 9.7,
101-
"dbSizeBytes": 4434
111+
"buildTimeMs": 9.3,
112+
"nodes": 6.4,
113+
"edges": 10.9,
114+
"dbSizeBytes": 5506
102115
},
103-
"noopRebuildMs": 5,
104-
"oneFileRebuildMs": 233,
116+
"noopRebuildMs": 4,
117+
"oneFileRebuildMs": 348,
105118
"queries": {
106-
"fnDepsMs": 1.8,
107-
"fnImpactMs": 1.4,
108-
"pathMs": 0.8,
109-
"rolesMs": 0.8
119+
"fnDepsMs": 2.1,
120+
"fnImpactMs": 1.6,
121+
"pathMs": 1.2,
122+
"rolesMs": 1.2
123+
},
124+
"phases": {
125+
"parseMs": 644.1,
126+
"insertMs": 14.9,
127+
"resolveMs": 13.1,
128+
"edgesMs": 59,
129+
"structureMs": 7.2,
130+
"rolesMs": 5.1,
131+
"complexityMs": 354.2
110132
}
111133
},
112134
"native": {
113-
"buildTimeMs": 225,
114-
"queryTimeMs": 1.8,
115-
"nodes": 644,
116-
"edges": 1062,
117-
"dbSizeBytes": 483328,
135+
"buildTimeMs": 813,
136+
"queryTimeMs": 2.5,
137+
"nodes": 778,
138+
"edges": 1333,
139+
"dbSizeBytes": 671744,
118140
"perFile": {
119-
"buildTimeMs": 2.1,
120-
"nodes": 5.9,
121-
"edges": 9.7,
122-
"dbSizeBytes": 4434
141+
"buildTimeMs": 6.7,
142+
"nodes": 6.4,
143+
"edges": 10.9,
144+
"dbSizeBytes": 5506
145+
},
146+
"noopRebuildMs": 4,
147+
"oneFileRebuildMs": 374,
148+
"queries": {
149+
"fnDepsMs": 2.1,
150+
"fnImpactMs": 1.6,
151+
"pathMs": 1.2,
152+
"rolesMs": 1.1
153+
},
154+
"phases": {
155+
"parseMs": 108.1,
156+
"insertMs": 14.5,
157+
"resolveMs": 9.9,
158+
"edgesMs": 63.9,
159+
"structureMs": 3.9,
160+
"rolesMs": 4.5,
161+
"complexityMs": 588.4
123162
}
124163
}
125164
},

0 commit comments

Comments
 (0)