diff --git a/README.md b/README.md index 3f993ea1..9c0206ad 100644 --- a/README.md +++ b/README.md @@ -423,14 +423,14 @@ Self-measured on every release via CI ([build benchmarks](generated/BUILD-BENCHM | Metric | Latest | |---|---| -| Build speed (native) | **6.7 ms/file** | +| Build speed (native) | **1.9 ms/file** | | Build speed (WASM) | **9.3 ms/file** | | Query time | **3ms** | | No-op rebuild (native) | **4ms** | -| 1-file rebuild (native) | **374ms** | +| 1-file rebuild (native) | **89ms** | | Query: fn-deps | **2.1ms** | | Query: path | **1.2ms** | -| ~50,000 files (est.) | **~335.0s build** | +| ~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 7085b99f..13f2c835 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.4.0 | native | 2026-02-27 | 122 | 6.7 ↑253% | 2.5 ↑67% | 6.4 ↑10% | 10.9 ↑20% | 5506 ↑43% | -| 2.4.0 | wasm | 2026-02-27 | 122 | 9.3 ↑41% | 3.3 ↑57% | 6.4 ↑10% | 10.9 ↑20% | 5506 ↑43% | +| 2.4.0 | native | 2026-02-27 | 122 | 1.9 ~ | 2.5 ↑67% | 6.4 ↑10% | 10.9 ↑20% | 5238 ↑36% | +| 2.4.0 | wasm | 2026-02-27 | 122 | 9.3 ↑41% | 3.4 ↑62% | 6.4 ↑10% | 10.9 ↑20% | 5506 ↑43% | | 2.3.0 | native | 2026-02-24 | 99 | 1.9 ~ | 1.5 ↑7% | 5.8 ↑7% | 9.1 ~ | 3848 ~ | | 2.3.0 | wasm | 2026-02-24 | 99 | 6.6 ~ | 2.1 ↑11% | 5.8 ~ | 9.1 ↑3% | 3848 ~ | | 2.1.0 | native | 2026-02-23 | 92 | 1.9 ↓24% | 1.4 ↑17% | 5.4 ↑6% | 9.1 ↓47% | 3829 ↓14% | @@ -20,11 +20,11 @@ Metrics are normalized per file for cross-version comparability. | Metric | Value | |--------|-------| -| Build time | 813ms | +| Build time | 229ms | | Query time | 3ms | | Nodes | 778 | | Edges | 1,333 | -| DB size | 656 KB | +| DB size | 624 KB | | Files | 122 | #### WASM @@ -42,13 +42,13 @@ Metrics are normalized per file for cross-version comparability. | Phase | Native | WASM | |-------|-------:|-----:| -| Parse | 108.1 ms | 644.1 ms | -| Insert nodes | 14.5 ms | 14.9 ms | -| Resolve imports | 9.9 ms | 13.1 ms | -| Build edges | 63.9 ms | 59 ms | -| Structure | 3.9 ms | 7.2 ms | -| Roles | 4.5 ms | 5.1 ms | -| Complexity | 588.4 ms | 354.2 ms | +| Parse | 116 ms | 639.2 ms | +| Insert nodes | 14.1 ms | 15.9 ms | +| Resolve imports | 10.2 ms | 13.4 ms | +| Build edges | 61.9 ms | 59.1 ms | +| Structure | 4.1 ms | 7.3 ms | +| Roles | 4.7 ms | 5.2 ms | +| Complexity | 4.6 ms | 367.8 ms | ### Estimated performance at 50,000 files @@ -56,8 +56,8 @@ Extrapolated linearly from per-file metrics above. | Metric | Native (Rust) | WASM | |--------|---:|---:| -| Build time | 335.0s | 465.0s | -| DB size | 262.5 MB | 262.5 MB | +| Build time | 95.0s | 465.0s | +| DB size | 249.8 MB | 262.5 MB | | Nodes | 320,000 | 320,000 | | Edges | 545,000 | 545,000 | @@ -65,15 +65,15 @@ Extrapolated linearly from per-file metrics above. | Version | Engine | No-op (ms) | 1-file (ms) | |---------|--------|----------:|-----------:| -| 2.4.0 | native | 4 | 374 | -| 2.4.0 | wasm | 4 | 348 | +| 2.4.0 | native | 4 | 89 | +| 2.4.0 | wasm | 4 | 362 | ### Query Latency | Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) | |---------|--------|------------:|--------------:|----------:|----------:| | 2.4.0 | native | 2.1 | 1.6 | 1.2 | 1.1 | -| 2.4.0 | wasm | 2.1 | 1.6 | 1.2 | 1.2 | +| 2.4.0 | wasm | 2.1 | 1.6 | 1.2 | 1.1 | ### Notes @@ -102,8 +102,8 @@ extractor is needed to recover the regression. "date": "2026-02-27", "files": 122, "wasm": { - "buildTimeMs": 1130, - "queryTimeMs": 3.3, + "buildTimeMs": 1138, + "queryTimeMs": 3.4, "nodes": 778, "edges": 1333, "dbSizeBytes": 671744, @@ -114,37 +114,37 @@ extractor is needed to recover the regression. "dbSizeBytes": 5506 }, "noopRebuildMs": 4, - "oneFileRebuildMs": 348, + "oneFileRebuildMs": 362, "queries": { "fnDepsMs": 2.1, "fnImpactMs": 1.6, "pathMs": 1.2, - "rolesMs": 1.2 + "rolesMs": 1.1 }, "phases": { - "parseMs": 644.1, - "insertMs": 14.9, - "resolveMs": 13.1, - "edgesMs": 59, - "structureMs": 7.2, - "rolesMs": 5.1, - "complexityMs": 354.2 + "parseMs": 639.2, + "insertMs": 15.9, + "resolveMs": 13.4, + "edgesMs": 59.1, + "structureMs": 7.3, + "rolesMs": 5.2, + "complexityMs": 367.8 } }, "native": { - "buildTimeMs": 813, + "buildTimeMs": 229, "queryTimeMs": 2.5, "nodes": 778, "edges": 1333, - "dbSizeBytes": 671744, + "dbSizeBytes": 638976, "perFile": { - "buildTimeMs": 6.7, + "buildTimeMs": 1.9, "nodes": 6.4, "edges": 10.9, - "dbSizeBytes": 5506 + "dbSizeBytes": 5238 }, "noopRebuildMs": 4, - "oneFileRebuildMs": 374, + "oneFileRebuildMs": 89, "queries": { "fnDepsMs": 2.1, "fnImpactMs": 1.6, @@ -152,13 +152,13 @@ extractor is needed to recover the regression. "rolesMs": 1.1 }, "phases": { - "parseMs": 108.1, - "insertMs": 14.5, - "resolveMs": 9.9, - "edgesMs": 63.9, - "structureMs": 3.9, - "rolesMs": 4.5, - "complexityMs": 588.4 + "parseMs": 116, + "insertMs": 14.1, + "resolveMs": 10.2, + "edgesMs": 61.9, + "structureMs": 4.1, + "rolesMs": 4.7, + "complexityMs": 4.6 } } },