diff --git a/README.md b/README.md index df03cfb3..098f7ccd 100644 --- a/README.md +++ b/README.md @@ -424,12 +424,12 @@ Self-measured on every release via CI ([build benchmarks](generated/BUILD-BENCHM | Metric | Latest | |---|---| | Build speed (native) | **1.9 ms/file** | -| Build speed (WASM) | **7.8 ms/file** | -| Query time | **2ms** | -| No-op rebuild (native) | **3ms** | -| 1-file rebuild (native) | **93ms** | -| Query: fn-deps | **1.8ms** | -| Query: path | **1ms** | +| Build speed (WASM) | **8.1 ms/file** | +| Query time | **3ms** | +| No-op rebuild (native) | **4ms** | +| 1-file rebuild (native) | **102ms** | +| Query: fn-deps | **2.3ms** | +| Query: path | **1.2ms** | | ~50,000 files (est.) | **~95.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/BUILD-BENCHMARKS.md b/generated/BUILD-BENCHMARKS.md index f03c89b0..855d8f42 100644 --- a/generated/BUILD-BENCHMARKS.md +++ b/generated/BUILD-BENCHMARKS.md @@ -5,8 +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) | |---------|--------|------|------:|----------------:|-----------:|-----------:|-----------:|----------------:| -| 2.5.1 | native | 2026-03-01 | 126 | 1.9 ↓5% | 2.1 ↓12% | 6.5 ~ | 11.1 ~ | 5526 ~ | -| 2.5.1 | wasm | 2026-03-01 | 126 | 7.8 ↓7% | 3 ↓14% | 6.5 ~ | 11.1 ~ | 5526 ~ | +| 2.5.1 | native | 2026-03-01 | 131 | 1.9 ↓5% | 3.1 ↑29% | 6.4 ~ | 11.1 ~ | 5440 ↓3% | +| 2.5.1 | wasm | 2026-03-01 | 131 | 8.1 ↓4% | 3.6 ↑3% | 6.4 ~ | 11.1 ~ | 5440 ↓3% | | 2.5.0 | native | 2026-02-28 | 123 | 2 | 2.4 | 6.5 | 11.1 | 5595 | | 2.5.0 | wasm | 2026-02-28 | 123 | 8.4 ↑65% | 3.5 ↑59% | 6.5 ~ | 11.1 ↑4% | 5595 ↑19% | | 2.4.0 | wasm | 2026-02-28 | 123 | 5.1 ↓23% | 2.2 ↑5% | 6.5 ↑12% | 10.7 ↑18% | 4695 ↑22% | @@ -23,35 +23,35 @@ Metrics are normalized per file for cross-version comparability. | Metric | Value | |--------|-------| -| Build time | 236ms | -| Query time | 2ms | -| Nodes | 817 | -| Edges | 1,393 | -| DB size | 680 KB | -| Files | 126 | +| Build time | 255ms | +| Query time | 3ms | +| Nodes | 844 | +| Edges | 1,458 | +| DB size | 696 KB | +| Files | 131 | #### WASM | Metric | Value | |--------|-------| -| Build time | 979ms | -| Query time | 3ms | -| Nodes | 817 | -| Edges | 1,393 | -| DB size | 680 KB | -| Files | 126 | +| Build time | 1.1s | +| Query time | 4ms | +| Nodes | 844 | +| Edges | 1,458 | +| DB size | 696 KB | +| Files | 131 | ### Build Phase Breakdown (latest) | Phase | Native | WASM | |-------|-------:|-----:| -| Parse | 138.2 ms | 621.1 ms | -| Insert nodes | 12.1 ms | 16.7 ms | -| Resolve imports | 5.5 ms | 10.2 ms | -| Build edges | 56.9 ms | 60.5 ms | -| Structure | 3.6 ms | 7.2 ms | -| Roles | 4.7 ms | 4.9 ms | -| Complexity | 4.7 ms | 232.5 ms | +| Parse | 140.5 ms | 671.4 ms | +| Insert nodes | 14.2 ms | 15.5 ms | +| Resolve imports | 10.6 ms | 13.9 ms | +| Build edges | 60.6 ms | 68.3 ms | +| Structure | 3.9 ms | 8 ms | +| Roles | 5.7 ms | 5.4 ms | +| Complexity | 5.4 ms | 248.9 ms | ### Estimated performance at 50,000 files @@ -59,17 +59,17 @@ Extrapolated linearly from per-file metrics above. | Metric | Native (Rust) | WASM | |--------|---:|---:| -| Build time | 95.0s | 390.0s | -| DB size | 263.5 MB | 263.5 MB | -| Nodes | 325,000 | 325,000 | +| Build time | 95.0s | 405.0s | +| DB size | 259.4 MB | 259.4 MB | +| Nodes | 320,000 | 320,000 | | Edges | 555,000 | 555,000 | ### Incremental Rebuilds | Version | Engine | No-op (ms) | 1-file (ms) | |---------|--------|----------:|-----------:| -| 2.5.1 | native | 3 ↓25% | 93 ↓4% | -| 2.5.1 | wasm | 4 ~ | 324 ~ | +| 2.5.1 | native | 4 ~ | 102 ↑5% | +| 2.5.1 | wasm | 5 ↑25% | 334 ↑3% | | 2.5.0 | native | 4 | 97 | | 2.5.0 | wasm | 4 ↓20% | 324 ↑69% | | 2.4.0 | wasm | 5 | 192 | @@ -78,8 +78,8 @@ Extrapolated linearly from per-file metrics above. | Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) | |---------|--------|------------:|--------------:|----------:|----------:| -| 2.5.1 | native | 1.8 ↓14% | 1.3 ↓19% | 1 ↓17% | 1 ↓9% | -| 2.5.1 | wasm | 1.8 ↓18% | 1.3 ↓19% | 1 ↓17% | 1.1 ~ | +| 2.5.1 | native | 2.3 ↑10% | 1.7 ↑6% | 1.2 ~ | 1.1 ~ | +| 2.5.1 | wasm | 2.3 ↑5% | 1.7 ↑6% | 1.3 ↑8% | 1.2 ↑9% | | 2.5.0 | native | 2.1 | 1.6 | 1.2 | 1.1 | | 2.5.0 | wasm | 2.2 ↑340% | 1.6 ↑220% | 1.2 | 1.1 ↑22% | | 2.4.0 | wasm | 0.5 | 0.5 | null | 0.9 | @@ -109,65 +109,65 @@ extractor is needed to recover the regression. { "version": "2.5.1", "date": "2026-03-01", - "files": 126, + "files": 131, "wasm": { - "buildTimeMs": 979, - "queryTimeMs": 3, - "nodes": 817, - "edges": 1393, - "dbSizeBytes": 696320, + "buildTimeMs": 1057, + "queryTimeMs": 3.6, + "nodes": 844, + "edges": 1458, + "dbSizeBytes": 712704, "perFile": { - "buildTimeMs": 7.8, - "nodes": 6.5, + "buildTimeMs": 8.1, + "nodes": 6.4, "edges": 11.1, - "dbSizeBytes": 5526 + "dbSizeBytes": 5440 }, - "noopRebuildMs": 4, - "oneFileRebuildMs": 324, + "noopRebuildMs": 5, + "oneFileRebuildMs": 334, "queries": { - "fnDepsMs": 1.8, - "fnImpactMs": 1.3, - "pathMs": 1, - "rolesMs": 1.1 + "fnDepsMs": 2.3, + "fnImpactMs": 1.7, + "pathMs": 1.3, + "rolesMs": 1.2 }, "phases": { - "parseMs": 621.1, - "insertMs": 16.7, - "resolveMs": 10.2, - "edgesMs": 60.5, - "structureMs": 7.2, - "rolesMs": 4.9, - "complexityMs": 232.5 + "parseMs": 671.4, + "insertMs": 15.5, + "resolveMs": 13.9, + "edgesMs": 68.3, + "structureMs": 8, + "rolesMs": 5.4, + "complexityMs": 248.9 } }, "native": { - "buildTimeMs": 236, - "queryTimeMs": 2.1, - "nodes": 817, - "edges": 1393, - "dbSizeBytes": 696320, + "buildTimeMs": 255, + "queryTimeMs": 3.1, + "nodes": 844, + "edges": 1458, + "dbSizeBytes": 712704, "perFile": { "buildTimeMs": 1.9, - "nodes": 6.5, + "nodes": 6.4, "edges": 11.1, - "dbSizeBytes": 5526 + "dbSizeBytes": 5440 }, - "noopRebuildMs": 3, - "oneFileRebuildMs": 93, + "noopRebuildMs": 4, + "oneFileRebuildMs": 102, "queries": { - "fnDepsMs": 1.8, - "fnImpactMs": 1.3, - "pathMs": 1, - "rolesMs": 1 + "fnDepsMs": 2.3, + "fnImpactMs": 1.7, + "pathMs": 1.2, + "rolesMs": 1.1 }, "phases": { - "parseMs": 138.2, - "insertMs": 12.1, - "resolveMs": 5.5, - "edgesMs": 56.9, - "structureMs": 3.6, - "rolesMs": 4.7, - "complexityMs": 4.7 + "parseMs": 140.5, + "insertMs": 14.2, + "resolveMs": 10.6, + "edgesMs": 60.6, + "structureMs": 3.9, + "rolesMs": 5.7, + "complexityMs": 5.4 } } },