diff --git a/README.md b/README.md index 28d2679e..62d7d251 100644 --- a/README.md +++ b/README.md @@ -553,14 +553,14 @@ Self-measured on every release via CI ([build benchmarks](generated/benchmarks/B | Metric | Latest | |---|---| -| Build speed (native) | **5.3 ms/file** | -| Build speed (WASM) | **12.2 ms/file** | +| Build speed (native) | **5.7 ms/file** | +| Build speed (WASM) | **11.9 ms/file** | | Query time | **12ms** | -| No-op rebuild (native) | **12ms** | -| 1-file rebuild (native) | **432ms** | -| Query: fn-deps | **1.7ms** | -| Query: path | **1.6ms** | -| ~50,000 files (est.) | **~265.0s build** | +| No-op rebuild (native) | **14ms** | +| 1-file rebuild (native) | **316ms** | +| Query: fn-deps | **1.9ms** | +| Query: path | **1.9ms** | +| ~50,000 files (est.) | **~285.0s build** | Metrics are normalized per file for cross-version comparability. Times above are for a full initial build — incremental rebuilds only re-parse changed files. diff --git a/generated/benchmarks/BUILD-BENCHMARKS.md b/generated/benchmarks/BUILD-BENCHMARKS.md index 287b6475..3a1fae1d 100644 --- a/generated/benchmarks/BUILD-BENCHMARKS.md +++ b/generated/benchmarks/BUILD-BENCHMARKS.md @@ -5,6 +5,8 @@ Metrics are normalized per file for cross-version comparability. | Version | Engine | Date | Files | Build (ms/file) | Query (ms) | Nodes/file | Edges/file | DB (bytes/file) | |---------|--------|------|------:|----------------:|-----------:|-----------:|-----------:|----------------:| +| 3.4.1 | native | 2026-03-27 | 473 | 5.7 ↑8% | 11.7 ~ | 23.2 ~ | 44.1 ~ | 57725 ↑5% | +| 3.4.1 | wasm | 2026-03-27 | 473 | 11.9 ↓2% | 12.2 ↑4% | 23.2 ~ | 44.1 ~ | 42276 ↑5% | | 3.4.0 | native | 2026-03-26 | 473 | 5.3 ↓13% | 11.6 ↑63% | 23.2 ↑32% | 44.2 ↑21% | 55041 ↑13% | | 3.4.0 | wasm | 2026-03-26 | 473 | 12.2 ↑9% | 11.7 ↑62% | 23.1 ↑32% | 44.4 ↑22% | 40198 ↓15% | | 3.3.1 | native | 2026-03-20 | 442 | 6.1 ↑74% | 7.1 ↑122% | 17.6 ↑31% | 36.5 ↑27% | 48707 ↑10% | @@ -43,42 +45,46 @@ Metrics are normalized per file for cross-version comparability. ### Raw totals (latest) +> **Engine parity note:** Native reports 10,982 nodes vs WASM 10,956 (−26 nodes, ~0.24%). +> DB size also diverges: 26.0 MB native vs 19.1 MB WASM (+36%). +> Tracked in [#649](https://github.com/optave/codegraph/issues/649). + #### Native (Rust) | Metric | Value | |--------|-------| -| Build time | 2.5s | +| Build time | 2.7s | | Query time | 12ms | -| Nodes | 10,963 | -| Edges | 20,921 | -| DB size | 24.8 MB | +| Nodes | 10,982 | +| Edges | 20,869 | +| DB size | 26.0 MB | | Files | 473 | #### WASM | Metric | Value | |--------|-------| -| Build time | 5.8s | +| Build time | 5.6s | | Query time | 12ms | -| Nodes | 10,937 | -| Edges | 21,022 | -| DB size | 18.1 MB | +| Nodes | 10,956 | +| Edges | 20,870 | +| DB size | 19.1 MB | | Files | 473 | ### Build Phase Breakdown (latest) | Phase | Native (build) | WASM (build) | Native (1-file) | WASM (1-file) | |-------|---------------:|-------------:|----------------:|--------------:| -| Parse | 1348.3 ms | 2438.2 ms | 78.3 ms | 239.9 ms | -| Insert nodes | 192 ms | 209.8 ms | 15.6 ms | 14.1 ms | -| Resolve imports | 13.3 ms | 15.1 ms | 1.7 ms | 1.6 ms | -| Build edges | 144.8 ms | 149.1 ms | 32.3 ms | 20.2 ms | -| Structure | 24.9 ms | 26.1 ms | 29.9 ms | 30.4 ms | -| Roles | 65 ms | 77.9 ms | 55.9 ms | 61 ms | -| AST nodes | 337.8 ms | 217.2 ms | 0.7 ms | 2.4 ms | -| Complexity | 25.8 ms | 348.1 ms | 0.7 ms | 7.9 ms | -| CFG | 160.3 ms | 370.5 ms | 0.3 ms | 0.3 ms | -| Dataflow | 117 ms | 119.5 ms | 0.5 ms | 0.5 ms | +| Parse | 1391.1 ms | 2374.7 ms | 80.8 ms | 224.1 ms | +| Insert nodes | 233.2 ms | 242.3 ms | 16.7 ms | 19 ms | +| Resolve imports | 12 ms | 14.7 ms | 1.5 ms | 1.6 ms | +| Build edges | 151.2 ms | 147.6 ms | 31.7 ms | 20.7 ms | +| Structure | 28.3 ms | 28.7 ms | 33.6 ms | 33.1 ms | +| Roles | 64.4 ms | 72 ms | 40.4 ms | 42.1 ms | +| AST nodes | 401.5 ms | 249.5 ms | 0.6 ms | 0.6 ms | +| Complexity | 28 ms | 330.8 ms | 0.6 ms | 0.7 ms | +| CFG | 182.1 ms | 368 ms | 0.3 ms | 0.4 ms | +| Dataflow | 131.2 ms | 133.6 ms | 0.4 ms | 0.5 ms | ### Estimated performance at 50,000 files @@ -86,15 +92,17 @@ Extrapolated linearly from per-file metrics above. | Metric | Native (Rust) | WASM | |--------|---:|---:| -| Build time | 265.0s | 610.0s | -| DB size | 2624.6 MB | 1916.8 MB | -| Nodes | 1,160,000 | 1,155,000 | -| Edges | 2,210,000 | 2,220,000 | +| Build time | 285.0s | 595.0s | +| DB size | 2752.5 MB | 2015.9 MB | +| Nodes | 1,160,000 | 1,160,000 | +| Edges | 2,205,000 | 2,205,000 | ### Incremental Rebuilds | Version | Engine | No-op (ms) | 1-file (ms) | |---------|--------|----------:|-----------:| +| 3.4.1 | native | 14 ↑17% | 316 ↓27% | +| 3.4.1 | wasm | 16 ↑60% | 487 ↓22% | | 3.4.0 | native | 12 ~ | 432 ↑22% | | 3.4.0 | wasm | 10 ↓17% | 621 ↑23% | | 3.3.1 | native | 12 ↑33% | 353 ↑33% | @@ -129,6 +137,8 @@ Extrapolated linearly from per-file metrics above. | Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) | |---------|--------|------------:|--------------:|----------:|----------:| +| 3.4.1 | native | 1.9 ↑12% | 2 ↑18% | 1.9 ↑19% | 21.6 ↑9% | +| 3.4.1 | wasm | 1.9 ↑6% | 2.1 ↑24% | 1.9 ↑19% | 20.7 ↓4% | | 3.4.0 | native | 1.7 ↑21% | 1.7 ↑21% | 1.6 ↑23% | 19.9 ↑32% | | 3.4.0 | wasm | 1.8 ↑38% | 1.7 ↑21% | 1.6 ↑23% | 21.5 ↑45% | | 3.3.1 | native | 1.4 ↑56% | 1.4 ↑56% | 1.3 ↑44% | 15.1 ↑50% | @@ -200,6 +210,109 @@ pre-parse that previously added ~388ms on native builds.