Skip to content

Commit a058615

Browse files
docs: update build performance benchmarks (3.8.0) (#747)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: carlos-alm <127798846+carlos-alm@users.noreply.github.com>
1 parent 1e97927 commit a058615

2 files changed

Lines changed: 149 additions & 28 deletions

File tree

README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -588,15 +588,16 @@ Codegraph also extracts symbols from common callback patterns: Commander `.comma
588588

589589
Self-measured on every release via CI ([build benchmarks](generated/benchmarks/BUILD-BENCHMARKS.md) | [embedding benchmarks](generated/benchmarks/EMBEDDING-BENCHMARKS.md) | [query benchmarks](generated/benchmarks/QUERY-BENCHMARKS.md) | [incremental benchmarks](generated/benchmarks/INCREMENTAL-BENCHMARKS.md) | [resolution precision/recall](tests/benchmarks/resolution/)):
590590

591-
| Metric | Latest (WASM) |
591+
| Metric | Latest |
592592
|---|---|
593-
| Build speed | **14.2 ms/file** |
594-
| Query time | **12ms** |
595-
| No-op rebuild | **15ms** |
596-
| 1-file rebuild | **542ms** |
597-
| Query: fn-deps | **2ms** |
598-
| Query: path | **2ms** |
599-
| ~50,000 files (est.) | **~710.0s build** |
593+
| Build speed (native) | **2.1 ms/file** |
594+
| Build speed (WASM) | **2.2 ms/file** |
595+
| Query time | **14ms** |
596+
| No-op rebuild (native) | **8ms** |
597+
| 1-file rebuild (native) | **33ms** |
598+
| Query: fn-deps | **2.5ms** |
599+
| Query: path | **2.1ms** |
600+
| ~50,000 files (est.) | **~105.0s build** |
600601

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

generated/benchmarks/BUILD-BENCHMARKS.md

Lines changed: 140 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+
| 3.8.0 | native | 2026-04-02 | 564 | 2.1 | 13.6 | 26 | 45.3 | 30851 |
9+
| 3.8.0 | wasm | 2026-04-02 | 564 | 2.2 ↓85% | 15.3 ↑22% | 26 ~ | 45.3 ↓10% | 30524 ↓43% |
810
| 3.7.0 | wasm | 2026-04-01 | 532 | 14.2 ↑7% | 12.5 ~ | 25.8 ~ | 50.3 ~ | 53795 ~ |
911
| 3.6.0 | wasm | 2026-03-30 | 514 | 13.3 ↑12% | 12.3 ~ | 25.6 ↑10% | 49.5 ↑12% | 54013 ↑28% |
1012
| 3.4.1 | native | 2026-03-27 | 473 | 5.7 ↑8% | 11.7 ~ | 23.2 ~ | 44.1 ~ | 57725 ↑5% |
@@ -47,47 +49,60 @@ Metrics are normalized per file for cross-version comparability.
4749

4850
### Raw totals (latest)
4951

52+
#### Native (Rust)
53+
54+
| Metric | Value |
55+
|--------|-------|
56+
| Build time | 1.2s |
57+
| Query time | 14ms |
58+
| Nodes | 14,652 |
59+
| Edges | 25,554 |
60+
| DB size | 16.6 MB |
61+
| Files | 564 |
62+
5063
#### WASM
5164

5265
| Metric | Value |
5366
|--------|-------|
54-
| Build time | 7.5s |
55-
| Query time | 12ms |
56-
| Nodes | 13,702 |
57-
| Edges | 26,786 |
58-
| DB size | 27.3 MB |
59-
| Files | 532 |
67+
| Build time | 1.2s |
68+
| Query time | 15ms |
69+
| Nodes | 14,652 |
70+
| Edges | 25,554 |
71+
| DB size | 16.4 MB |
72+
| Files | 564 |
6073

6174
### Build Phase Breakdown (latest)
6275

6376
| Phase | Native (build) | WASM (build) | Native (1-file) | WASM (1-file) |
6477
|-------|---------------:|-------------:|----------------:|--------------:|
65-
| Parse | n/a | 2888.3 ms | n/a | 252.4 ms |
66-
| Insert nodes | n/a | 289.1 ms | n/a | 17.7 ms |
67-
| Resolve imports | n/a | 11.5 ms | n/a | 1.6 ms |
68-
| Build edges | n/a | 173.3 ms | n/a | 19 ms |
69-
| Structure | n/a | 43.1 ms | n/a | 34 ms |
70-
| Roles | n/a | 75 ms | n/a | 47.4 ms |
71-
| AST nodes | n/a | 393 ms | n/a | 6.6 ms |
72-
| Complexity | n/a | 416.7 ms | n/a | 0.7 ms |
73-
| CFG | n/a | 445.1 ms | n/a | 0.4 ms |
74-
| Dataflow | n/a | 285.6 ms | n/a | 0.4 ms |
78+
| Parse | 549.9 ms | 554.8 ms | 0.3 ms | 0.3 ms |
79+
| Insert nodes | 375 ms | 377.9 ms | 0.8 ms | 0.7 ms |
80+
| Resolve imports | 4.4 ms | 4.6 ms | 0.3 ms | 0.4 ms |
81+
| Build edges | 146.7 ms | 151.9 ms | 8.1 ms | 8.2 ms |
82+
| Structure | 0.3 ms | 0.3 ms | 0.2 ms | 0.2 ms |
83+
| Roles | 68.8 ms | 69.6 ms | 13.9 ms | 14.1 ms |
84+
| AST nodes | 0 ms | 0 ms | 0 ms | 0 ms |
85+
| Complexity | 0 ms | 0 ms | 0 ms | 0 ms |
86+
| CFG | 0 ms | 0 ms | 0 ms | 0 ms |
87+
| Dataflow | 0 ms | 0 ms | 0 ms | 0 ms |
7588

7689
### Estimated performance at 50,000 files
7790

7891
Extrapolated linearly from per-file metrics above.
7992

8093
| Metric | Native (Rust) | WASM |
8194
|--------|---:|---:|
82-
| Build time | n/a | 710.0s |
83-
| DB size | n/a | 2565.1 MB |
84-
| Nodes | n/a | 1,290,000 |
85-
| Edges | n/a | 2,515,000 |
95+
| Build time | 105.0s | 110.0s |
96+
| DB size | 1471.1 MB | 1455.5 MB |
97+
| Nodes | 1,300,000 | 1,300,000 |
98+
| Edges | 2,265,000 | 2,265,000 |
8699

87100
### Incremental Rebuilds
88101

89102
| Version | Engine | No-op (ms) | 1-file (ms) |
90103
|---------|--------|----------:|-----------:|
104+
| 3.8.0 | native | 8 | 33 |
105+
| 3.8.0 | wasm | 8 ↓47% | 33 ↓94% |
91106
| 3.7.0 | wasm | 15 ↑7% | 542 ~ |
92107
| 3.6.0 | wasm | 14 ↓12% | 547 ↑12% |
93108
| 3.4.1 | native | 14 ↑17% | 316 ↓27% |
@@ -126,6 +141,8 @@ Extrapolated linearly from per-file metrics above.
126141

127142
| Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) |
128143
|---------|--------|------------:|--------------:|----------:|----------:|
144+
| 3.8.0 | native | 2.5 | 2.2 | 2.1 | 29.2 |
145+
| 3.8.0 | wasm | 2.2 ↑10% | 2.2 ↑5% | 2.1 ↑5% | 31.3 ↑28% |
129146
| 3.7.0 | wasm | 2 ↓5% | 2.1 ~ | 2 ↑5% | 24.4 ↑2% |
130147
| 3.6.0 | wasm | 2.1 ↑11% | 2.1 ~ | 1.9 ~ | 23.9 ↑15% |
131148
| 3.4.1 | native | 1.9 ↑12% | 2 ↑18% | 1.9 ↑19% | 21.6 ↑9% |
@@ -201,6 +218,109 @@ pre-parse that previously added ~388ms on native builds.
201218

202219
<!-- BENCHMARK_DATA
203220
[
221+
{
222+
"version": "3.8.0",
223+
"date": "2026-04-02",
224+
"files": 564,
225+
"wasm": {
226+
"buildTimeMs": 1231,
227+
"queryTimeMs": 15.3,
228+
"nodes": 14652,
229+
"edges": 25554,
230+
"dbSizeBytes": 17215488,
231+
"perFile": {
232+
"buildTimeMs": 2.2,
233+
"nodes": 26,
234+
"edges": 45.3,
235+
"dbSizeBytes": 30524
236+
},
237+
"noopRebuildMs": 8,
238+
"oneFileRebuildMs": 33,
239+
"oneFilePhases": {
240+
"setupMs": 5.4,
241+
"parseMs": 0.3,
242+
"insertMs": 0.7,
243+
"resolveMs": 0.4,
244+
"edgesMs": 8.2,
245+
"structureMs": 0.2,
246+
"rolesMs": 14.1,
247+
"astMs": 0,
248+
"complexityMs": 0,
249+
"cfgMs": 0,
250+
"dataflowMs": 0,
251+
"finalizeMs": 0.3
252+
},
253+
"queries": {
254+
"fnDepsMs": 2.2,
255+
"fnImpactMs": 2.2,
256+
"pathMs": 2.1,
257+
"rolesMs": 31.3
258+
},
259+
"phases": {
260+
"setupMs": 5.9,
261+
"parseMs": 554.8,
262+
"insertMs": 377.9,
263+
"resolveMs": 4.6,
264+
"edgesMs": 151.9,
265+
"structureMs": 0.3,
266+
"rolesMs": 69.6,
267+
"astMs": 0,
268+
"complexityMs": 0,
269+
"cfgMs": 0,
270+
"dataflowMs": 0,
271+
"finalizeMs": 0.3
272+
}
273+
},
274+
"native": {
275+
"buildTimeMs": 1209,
276+
"queryTimeMs": 13.6,
277+
"nodes": 14652,
278+
"edges": 25554,
279+
"dbSizeBytes": 17399808,
280+
"perFile": {
281+
"buildTimeMs": 2.1,
282+
"nodes": 26,
283+
"edges": 45.3,
284+
"dbSizeBytes": 30851
285+
},
286+
"noopRebuildMs": 8,
287+
"oneFileRebuildMs": 33,
288+
"oneFilePhases": {
289+
"setupMs": 5.6,
290+
"parseMs": 0.3,
291+
"insertMs": 0.8,
292+
"resolveMs": 0.3,
293+
"edgesMs": 8.1,
294+
"structureMs": 0.2,
295+
"rolesMs": 13.9,
296+
"astMs": 0,
297+
"complexityMs": 0,
298+
"cfgMs": 0,
299+
"dataflowMs": 0,
300+
"finalizeMs": 0.3
301+
},
302+
"queries": {
303+
"fnDepsMs": 2.5,
304+
"fnImpactMs": 2.2,
305+
"pathMs": 2.1,
306+
"rolesMs": 29.2
307+
},
308+
"phases": {
309+
"setupMs": 4.9,
310+
"parseMs": 549.9,
311+
"insertMs": 375,
312+
"resolveMs": 4.4,
313+
"edgesMs": 146.7,
314+
"structureMs": 0.3,
315+
"rolesMs": 68.8,
316+
"astMs": 0,
317+
"complexityMs": 0,
318+
"cfgMs": 0,
319+
"dataflowMs": 0,
320+
"finalizeMs": 0.4
321+
}
322+
}
323+
},
204324
{
205325
"version": "3.7.0",
206326
"date": "2026-04-01",

0 commit comments

Comments
 (0)