Skip to content

Commit eb52074

Browse files
docs: update build performance benchmarks (2.5.0) (#164)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent c818b7c commit eb52074

File tree

2 files changed

+109
-13
lines changed

2 files changed

+109
-13
lines changed

README.md

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

424424
| Metric | Latest |
425425
|---|---|
426-
| Build speed | **5.1 ms/file** |
426+
| Build speed (native) | **2 ms/file** |
427+
| Build speed (WASM) | **8.4 ms/file** |
427428
| Query time | **2ms** |
428-
| No-op rebuild | **5ms** |
429-
| 1-file rebuild | **192ms** |
430-
| Query: fn-deps | **0.5ms** |
431-
| ~50,000 files (est.) | **~255.0s build** |
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** |
432434

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

generated/BUILD-BENCHMARKS.md

Lines changed: 102 additions & 8 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.0 | native | 2026-02-28 | 123 | 2 | 2.4 | 6.5 | 11.1 | 5595 |
9+
| 2.5.0 | wasm | 2026-02-28 | 123 | 8.4 ↑65% | 3.5 ↑59% | 6.5 ~ | 11.1 ↑4% | 5595 ↑19% |
810
| 2.4.0 | wasm | 2026-02-28 | 123 | 5.1 ↓23% | 2.2 ↑5% | 6.5 ↑12% | 10.7 ↑18% | 4695 ↑22% |
911
| 2.3.0 | native | 2026-02-24 | 99 | 1.9 ~ | 1.5 ↑7% | 5.8 ↑7% | 9.1 ~ | 3848 ~ |
1012
| 2.3.0 | wasm | 2026-02-24 | 99 | 6.6 ~ | 2.1 ↑11% | 5.8 ~ | 9.1 ↑3% | 3848 ~ |
@@ -15,38 +17,65 @@ Metrics are normalized per file for cross-version comparability.
1517

1618
### Raw totals (latest)
1719

18-
#### WASM
20+
#### Native (Rust)
1921

2022
| Metric | Value |
2123
|--------|-------|
22-
| Build time | 630ms |
24+
| Build time | 241ms |
2325
| Query time | 2ms |
2426
| Nodes | 801 |
25-
| Edges | 1,320 |
26-
| DB size | 564 KB |
27+
| Edges | 1,365 |
28+
| DB size | 672 KB |
29+
| Files | 123 |
30+
31+
#### WASM
32+
33+
| Metric | Value |
34+
|--------|-------|
35+
| Build time | 1.0s |
36+
| Query time | 4ms |
37+
| Nodes | 801 |
38+
| Edges | 1,365 |
39+
| DB size | 672 KB |
2740
| Files | 123 |
2841

42+
### Build Phase Breakdown (latest)
43+
44+
| Phase | Native | WASM |
45+
|-------|-------:|-----:|
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 |
53+
2954
### Estimated performance at 50,000 files
3055

3156
Extrapolated linearly from per-file metrics above.
3257

3358
| Metric | Native (Rust) | WASM |
3459
|--------|---:|---:|
35-
| Build time | n/a | 255.0s |
36-
| DB size | n/a | 223.9 MB |
37-
| Nodes | n/a | 325,000 |
38-
| Edges | n/a | 535,000 |
60+
| Build time | 100.0s | 420.0s |
61+
| DB size | 266.8 MB | 266.8 MB |
62+
| Nodes | 325,000 | 325,000 |
63+
| Edges | 555,000 | 555,000 |
3964

4065
### Incremental Rebuilds
4166

4267
| Version | Engine | No-op (ms) | 1-file (ms) |
4368
|---------|--------|----------:|-----------:|
69+
| 2.5.0 | native | 4 | 97 |
70+
| 2.5.0 | wasm | 4 ↓20% | 324 ↑69% |
4471
| 2.4.0 | wasm | 5 | 192 |
4572

4673
### Query Latency
4774

4875
| Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) |
4976
|---------|--------|------------:|--------------:|----------:|----------:|
77+
| 2.5.0 | native | 2.1 | 1.6 | 1.2 | 1.1 |
78+
| 2.5.0 | wasm | 2.2 ↑340% | 1.6 ↑220% | 1.2 | 1.1 ↑22% |
5079
| 2.4.0 | wasm | 0.5 | 0.5 | null | 0.9 |
5180

5281
<!-- NOTES_START -->
@@ -71,6 +100,71 @@ extractor is needed to recover the regression.
71100

72101
<!-- BENCHMARK_DATA
73102
[
103+
{
104+
"version": "2.5.0",
105+
"date": "2026-02-28",
106+
"files": 123,
107+
"wasm": {
108+
"buildTimeMs": 1033,
109+
"queryTimeMs": 3.5,
110+
"nodes": 801,
111+
"edges": 1365,
112+
"dbSizeBytes": 688128,
113+
"perFile": {
114+
"buildTimeMs": 8.4,
115+
"nodes": 6.5,
116+
"edges": 11.1,
117+
"dbSizeBytes": 5595
118+
},
119+
"noopRebuildMs": 4,
120+
"oneFileRebuildMs": 324,
121+
"queries": {
122+
"fnDepsMs": 2.2,
123+
"fnImpactMs": 1.6,
124+
"pathMs": 1.2,
125+
"rolesMs": 1.1
126+
},
127+
"phases": {
128+
"parseMs": 655.7,
129+
"insertMs": 18.8,
130+
"resolveMs": 13,
131+
"edgesMs": 62.8,
132+
"structureMs": 10.2,
133+
"rolesMs": 8.5,
134+
"complexityMs": 240.7
135+
}
136+
},
137+
"native": {
138+
"buildTimeMs": 241,
139+
"queryTimeMs": 2.4,
140+
"nodes": 801,
141+
"edges": 1365,
142+
"dbSizeBytes": 688128,
143+
"perFile": {
144+
"buildTimeMs": 2,
145+
"nodes": 6.5,
146+
"edges": 11.1,
147+
"dbSizeBytes": 5595
148+
},
149+
"noopRebuildMs": 4,
150+
"oneFileRebuildMs": 97,
151+
"queries": {
152+
"fnDepsMs": 2.1,
153+
"fnImpactMs": 1.6,
154+
"pathMs": 1.2,
155+
"rolesMs": 1.1
156+
},
157+
"phases": {
158+
"parseMs": 133,
159+
"insertMs": 13,
160+
"resolveMs": 9.7,
161+
"edgesMs": 57.4,
162+
"structureMs": 3.8,
163+
"rolesMs": 5.3,
164+
"complexityMs": 5.1
165+
}
166+
}
167+
},
74168
{
75169
"version": "2.4.0",
76170
"date": "2026-02-28",

0 commit comments

Comments
 (0)