diff --git a/README.md b/README.md index 4d4f2d80..a8f32afc 100644 --- a/README.md +++ b/README.md @@ -617,19 +617,19 @@ Codegraph also extracts symbols from common callback patterns: Commander `.comma 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/)): -*Last updated: v3.9.4 (2026-04-18)* +*Last updated: v3.9.6 (2026-04-30)* | Metric | Native | WASM | |---|---|---| -| Build speed | **3.2 ms/file** | **16.3 ms/file** | -| Query time | **29ms** | **44ms** | -| No-op rebuild | **10ms** | **21ms** | -| 1-file rebuild | **400ms** | **64ms** | -| Query: fn-deps | **2.5ms** | **2.2ms** | -| Query: path | **2.4ms** | **2.2ms** | -| ~50,000 files (est.) | **~160.0s build** | **~815.0s build** | -| Resolution precision | **90.3%** | — | -| Resolution recall | **42.9%** | — | +| Build speed | **5.8 ms/file** | **28.3 ms/file** | +| Query time | **47ms** | **43ms** | +| No-op rebuild | **13ms** | **134ms** | +| 1-file rebuild | **78ms** | **68ms** | +| Query: fn-deps | **3.4ms** | **2.4ms** | +| Query: path | **3.1ms** | **2.2ms** | +| ~50,000 files (est.) | **~290.0s build** | **~1415.0s build** | +| Resolution precision | **90.5%** | — | +| Resolution recall | **42.0%** | — | Metrics are normalized per file for cross-version comparability. Times above are for a full initial build — incremental rebuilds only re-parse changed files. @@ -638,7 +638,7 @@ Metrics are normalized per file for cross-version comparability. Times above are | Language | Precision | Recall | TP | FP | FN | Edges | Dynamic | |----------|----------:|-------:|---:|---:|---:|------:|--------:| | javascript | 100.0% | 66.7% | 12 | 0 | 6 | 18 | 14/28 | -| typescript | 93.8% | 75.0% | 15 | 1 | 5 | 20 | — | +| typescript | 100.0% | 75.0% | 15 | 0 | 5 | 20 | — | | bash | 100.0% | 100.0% | 12 | 0 | 0 | 12 | 0/1 | | c | 100.0% | 100.0% | 9 | 0 | 0 | 9 | — | | clojure | 80.0% | 26.7% | 4 | 1 | 11 | 15 | — | @@ -652,7 +652,7 @@ Metrics are normalized per file for cross-version comparability. Times above are | gleam | 100.0% | 26.7% | 4 | 0 | 11 | 15 | — | | go | 100.0% | 69.2% | 9 | 0 | 4 | 13 | 13/14 | | groovy | 100.0% | 7.7% | 1 | 0 | 12 | 13 | — | -| haskell | 100.0% | 33.3% | 4 | 0 | 8 | 12 | — | +| haskell | 0.0% | 0.0% | 0 | 0 | 12 | 12 | — | | hcl | 0.0% | 0.0% | 0 | 0 | 2 | 2 | — | | java | 100.0% | 52.9% | 9 | 0 | 8 | 17 | — | | julia | 0.0% | 0.0% | 0 | 0 | 15 | 15 | — | @@ -676,10 +676,10 @@ Metrics are normalized per file for cross-version comparability. Times above are | Mode | Resolved | Expected | Recall | |------|--------:|---------:|-------:| -| module-function | 16 | 106 | 15.1% | +| module-function | 13 | 106 | 12.3% | | receiver-typed | 17 | 104 | 16.3% | | static | 66 | 93 | 71.0% | -| same-file | 48 | 86 | 55.8% | +| same-file | 47 | 86 | 54.7% | | interface-dispatched | 7 | 12 | 58.3% | | class-inheritance | 0 | 4 | 0.0% | | trait-dispatch | 0 | 2 | 0.0% | diff --git a/generated/benchmarks/BUILD-BENCHMARKS.md b/generated/benchmarks/BUILD-BENCHMARKS.md index cb892f1e..4f529cb9 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.9.6 | native | 2026-04-30 | 744 | 5.8 ↑81% | 47 ↑60% | 24 ↓6% | 50 ↓7% | 41422 ↓7% | +| 3.9.6 | wasm | 2026-04-30 | 742 | 28.3 ↑74% | 42.8 ↓3% | 24.3 ~ | 50.5 ~ | 41335 ↑6% | | 3.9.4 | native | 2026-04-18 | 668 | 3.2 ↓3% | 29.4 ~ | 25.6 ~ | 53.8 ↑4% | 44590 ~ | | 3.9.4 | wasm | 2026-04-18 | 728 | 16.3 ↑3% | 44.1 ↑6% | 24.3 ~ | 51.4 ↑4% | 38839 ~ | | 3.9.3 | native | 2026-04-13 | 727 | 3.3 ↓79% | 29.5 ↑11% | 25.4 ~ | 51.6 ~ | 43981 ↑7% | @@ -65,38 +67,38 @@ Metrics are normalized per file for cross-version comparability. | Metric | Value | |--------|-------| -| Build time | 2.1s | -| Query time | 29ms | -| Nodes | 17,117 | -| Edges | 35,945 | -| DB size | 28.4 MB | -| Files | 668 | +| Build time | 4.3s | +| Query time | 47ms | +| Nodes | 17,834 | +| Edges | 37,164 | +| DB size | 29.4 MB | +| Files | 744 | #### WASM | Metric | Value | |--------|-------| -| Build time | 11.9s | -| Query time | 44ms | -| Nodes | 17,673 | -| Edges | 37,404 | -| DB size | 27.0 MB | -| Files | 728 | +| Build time | 21.0s | +| Query time | 43ms | +| Nodes | 18,061 | +| Edges | 37,469 | +| DB size | 29.3 MB | +| Files | 742 | ### Build Phase Breakdown (latest) | Phase | Native (build) | WASM (build) | Native (1-file) | WASM (1-file) | |-------|---------------:|-------------:|----------------:|--------------:| -| Parse | 614.7 ms | 4484.3 ms | 53.5 ms | 1.2 ms | -| Insert nodes | 374.7 ms | 1187.9 ms | 27.4 ms | 0.4 ms | -| Resolve imports | 4.2 ms | 27.4 ms | 0.9 ms | 0.5 ms | -| Build edges | 237 ms | 356.2 ms | 33.4 ms | 1.6 ms | -| Structure | 36.4 ms | 1582.1 ms | 122.9 ms | 3.1 ms | -| Roles | 88.9 ms | 101.2 ms | 106.6 ms | 26 ms | -| AST nodes | 244.3 ms | 765.9 ms | 0.6 ms | 0.8 ms | -| Complexity | 19 ms | 1032.1 ms | 0.7 ms | 0.6 ms | -| CFG | 188.9 ms | 1118.3 ms | 1.6 ms | 0.3 ms | -| Dataflow | 167.3 ms | 858.4 ms | 0.1 ms | 0.5 ms | +| Parse | 635.8 ms | 11596 ms | 0.5 ms | 4.1 ms | +| Insert nodes | 375.7 ms | 406.5 ms | 0.3 ms | 0.4 ms | +| Resolve imports | 4.2 ms | 19.5 ms | 0.5 ms | 0.5 ms | +| Build edges | 193.7 ms | 303.5 ms | 7.1 ms | 1.5 ms | +| Structure | 35.6 ms | 82.7 ms | 6.9 ms | 3.1 ms | +| Roles | 89.2 ms | 97.8 ms | 39.7 ms | 25.3 ms | +| AST nodes | 240.5 ms | 325.7 ms | 0.3 ms | 0.6 ms | +| Complexity | 19 ms | 1122.6 ms | 0 ms | 0.8 ms | +| CFG | 188.2 ms | 322.3 ms | 0 ms | 0.7 ms | +| Dataflow | 165.5 ms | 220.9 ms | 0 ms | 0.4 ms | ### Estimated performance at 50,000 files @@ -104,15 +106,17 @@ Extrapolated linearly from per-file metrics above. | Metric | Native (Rust) | WASM | |--------|---:|---:| -| Build time | 160.0s | 815.0s | -| DB size | 2126.2 MB | 1852.0 MB | -| Nodes | 1,280,000 | 1,215,000 | -| Edges | 2,690,000 | 2,570,000 | +| Build time | 290.0s | 1415.0s | +| DB size | 1975.2 MB | 1971.0 MB | +| Nodes | 1,200,000 | 1,215,000 | +| Edges | 2,500,000 | 2,525,000 | ### Incremental Rebuilds | Version | Engine | No-op (ms) | 1-file (ms) | |---------|--------|----------:|-----------:| +| 3.9.6 | native | 13 ↑30% | 78 ↓80% | +| 3.9.6 | wasm | 134 ↑538% | 68 ↑6% | | 3.9.4 | native | 10 ↓9% | 400 ~ | | 3.9.4 | wasm | 21 ↓5% | 64 ↓90% | | 3.9.3 | native | 11 ↑22% | 397 ↓29% | @@ -165,6 +169,8 @@ Extrapolated linearly from per-file metrics above. | Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) | |---------|--------|------------:|--------------:|----------:|----------:| +| 3.9.6 | native | 3.4 ↑36% | 3.1 ↑24% | 3.1 ↑29% | 37 ↓5% | +| 3.9.6 | wasm | 2.4 ↑9% | 2.4 ↑4% | 2.2 ~ | 31.3 ↓4% | | 3.9.4 | native | 2.5 ~ | 2.5 ~ | 2.4 ↓4% | 39 ↓6% | | 3.9.4 | wasm | 2.2 ↓8% | 2.3 ↓4% | 2.2 ↓4% | 32.6 ↓6% | | 3.9.3 | native | 2.5 ↑9% | 2.5 ↑4% | 2.5 ~ | 41.3 ↑24% | @@ -270,6 +276,957 @@ pre-parse that previously added ~388ms on native builds.