From 984d557c4e6eb2c08dc0a9e74f4dcd21c5476c68 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 9 Apr 2026 05:44:30 +0000 Subject: [PATCH] docs: update build performance benchmarks (3.9.2) --- README.md | 74 +- generated/benchmarks/BUILD-BENCHMARKS.md | 999 ++++++++++++++++++++++- 2 files changed, 1037 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index fe8a37ed..ea5e993f 100644 --- a/README.md +++ b/README.md @@ -588,22 +588,76 @@ 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.1 (2026-04-06)* +*Last updated: v3.9.2 (2026-04-09)* | Metric | Native | WASM | |---|---|---| -| Build speed | **10.2 ms/file** | **13.7 ms/file** | -| Query time | **23ms** | **36ms** | -| No-op rebuild | **17ms** | **15ms** | -| 1-file rebuild | **767ms** | **639ms** | -| Query: fn-deps | **2.2ms** | **2.2ms** | -| Query: path | **2.2ms** | **2.2ms** | -| ~50,000 files (est.) | **~510.0s build** | **~685.0s build** | -| Resolution precision | **100.0%** | — | -| Resolution recall | **71.1%** | — | +| Build speed | **15.7 ms/file** | **15 ms/file** | +| Query time | **27ms** | **40ms** | +| No-op rebuild | **9ms** | **20ms** | +| 1-file rebuild | **558ms** | **624ms** | +| Query: fn-deps | **2.3ms** | **2.4ms** | +| Query: path | **2.5ms** | **2.4ms** | +| ~50,000 files (est.) | **~785.0s build** | **~750.0s build** | +| Resolution precision | **90.7%** | — | +| Resolution recall | **42.9%** | — | Metrics are normalized per file for cross-version comparability. Times above are for a full initial build — incremental rebuilds only re-parse changed files. +
Per-language resolution precision/recall + +| Language | Precision | Recall | TP | FP | FN | Edges | Dynamic | +|----------|----------:|-------:|---:|---:|---:|------:|--------:| +| javascript | 100.0% | 66.7% | 12 | 0 | 6 | 18 | 14/28 | +| 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 | — | +| cpp | 100.0% | 57.1% | 8 | 0 | 6 | 14 | — | +| csharp | 100.0% | 52.6% | 10 | 0 | 9 | 19 | — | +| cuda | 50.0% | 33.3% | 4 | 4 | 8 | 12 | — | +| dart | 0.0% | 0.0% | 0 | 0 | 18 | 18 | — | +| elixir | 0.0% | 0.0% | 0 | 0 | 15 | 15 | — | +| erlang | 100.0% | 100.0% | 12 | 0 | 0 | 12 | — | +| fsharp | 0.0% | 0.0% | 0 | 9 | 12 | 12 | — | +| 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 | — | +| 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 | — | +| kotlin | 92.3% | 63.2% | 12 | 1 | 7 | 19 | — | +| lua | 100.0% | 15.4% | 2 | 0 | 11 | 13 | — | +| objc | 0.0% | 0.0% | 0 | 1 | 12 | 12 | — | +| ocaml | 100.0% | 8.3% | 1 | 0 | 11 | 12 | — | +| php | 100.0% | 31.6% | 6 | 0 | 13 | 19 | — | +| python | 100.0% | 60.0% | 9 | 0 | 6 | 15 | 15/15 | +| r | 100.0% | 100.0% | 11 | 0 | 0 | 11 | — | +| ruby | 100.0% | 100.0% | 11 | 0 | 0 | 11 | 11/11 | +| rust | 100.0% | 35.7% | 5 | 0 | 9 | 14 | — | +| scala | 100.0% | 71.4% | 5 | 0 | 2 | 7 | — | +| solidity | 33.3% | 7.7% | 1 | 2 | 12 | 13 | — | +| swift | 75.0% | 42.9% | 6 | 2 | 8 | 14 | 9/9 | +| tsx | 100.0% | 100.0% | 13 | 0 | 0 | 13 | — | +| verilog | 0.0% | 0.0% | 0 | 0 | 4 | 4 | — | +| zig | 0.0% | 0.0% | 0 | 0 | 15 | 15 | — | + +**By resolution mode (all languages):** + +| Mode | Resolved | Expected | Recall | +|------|--------:|---------:|-------:| +| module-function | 16 | 106 | 15.1% | +| receiver-typed | 17 | 104 | 16.3% | +| static | 66 | 93 | 71.0% | +| same-file | 48 | 86 | 55.8% | +| interface-dispatched | 7 | 12 | 58.3% | +| class-inheritance | 0 | 4 | 0.0% | +| trait-dispatch | 0 | 2 | 0.0% | +| package-function | 1 | 1 | 100.0% | + +
+ ### Lightweight Footprint npm unpacked size diff --git a/generated/benchmarks/BUILD-BENCHMARKS.md b/generated/benchmarks/BUILD-BENCHMARKS.md index 84da09da..8442460f 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.2 | native | 2026-04-09 | 727 | 15.7 ↑54% | 26.6 ↑14% | 25.3 ↓10% | 51.4 ↓10% | 41028 ↓15% | +| 3.9.2 | wasm | 2026-04-09 | 727 | 15 ↑9% | 40.1 ↑13% | 24 ↓15% | 49.2 ↓14% | 38256 ↓16% | | 3.9.1 | native | 2026-04-06 | 570 | 10.2 ↓20% | 23.4 ↓23% | 28.1 ↑3% | 56.9 ↑5% | 48433 ↑8% | | 3.9.1 | wasm | 2026-04-06 | 570 | 13.7 ↑5% | 35.6 ↑16% | 28.1 ↑3% | 56.9 ↑5% | 45717 ↑2% | | 3.9.0 | native | 2026-04-04 | 567 | 12.8 ↓4% | 30.4 ↑5% | 27.3 ~ | 54 ↑14% | 44666 ↑2% | @@ -59,38 +61,38 @@ Metrics are normalized per file for cross-version comparability. | Metric | Value | |--------|-------| -| Build time | 5.8s | -| Query time | 23ms | -| Nodes | 16,031 | -| Edges | 32,445 | -| DB size | 26.3 MB | -| Files | 570 | +| Build time | 10.5s | +| Query time | 27ms | +| Nodes | 16,879 | +| Edges | 34,281 | +| DB size | 26.1 MB | +| Files | 727 | #### WASM | Metric | Value | |--------|-------| -| Build time | 7.8s | -| Query time | 36ms | -| Nodes | 16,031 | -| Edges | 32,445 | -| DB size | 24.9 MB | -| Files | 570 | +| Build time | 10.9s | +| Query time | 40ms | +| Nodes | 17,438 | +| Edges | 35,744 | +| DB size | 26.5 MB | +| Files | 727 | ### Build Phase Breakdown (latest) | Phase | Native (build) | WASM (build) | Native (1-file) | WASM (1-file) | |-------|---------------:|-------------:|----------------:|--------------:| -| Parse | 3382.4 ms | 3103.6 ms | 338.9 ms | 272.6 ms | -| Insert nodes | 406.8 ms | 346.4 ms | 49 ms | 20.8 ms | -| Resolve imports | 14.1 ms | 15.8 ms | 2.2 ms | 1.9 ms | -| Build edges | 234.5 ms | 218.1 ms | 49.8 ms | 31.5 ms | -| Structure | 49.6 ms | 62.3 ms | 28.7 ms | 31.6 ms | -| Roles | 86.8 ms | 84.9 ms | 80.7 ms | 83.1 ms | -| AST nodes | 283.3 ms | 730.3 ms | 11.9 ms | 1.4 ms | -| Complexity | 61.7 ms | 1077.6 ms | 0.3 ms | 0.7 ms | -| CFG | 309.7 ms | 1076.7 ms | 0.7 ms | 0.4 ms | -| Dataflow | 904 ms | 834.7 ms | 0.3 ms | 0.6 ms | +| Parse | 600.1 ms | 4898.5 ms | 53.4 ms | 263.4 ms | +| Insert nodes | 363.1 ms | 989.5 ms | 25.9 ms | 21.6 ms | +| Resolve imports | 3.6 ms | 18.6 ms | 0.7 ms | 2 ms | +| Build edges | 196.8 ms | 272.5 ms | 30.1 ms | 32.9 ms | +| Structure | 111 ms | 754.4 ms | 121.4 ms | 39.4 ms | +| Roles | 76.4 ms | 91.6 ms | 76.2 ms | 81.6 ms | +| AST nodes | 1436.3 ms | 756.4 ms | 26 ms | 0.8 ms | +| Complexity | 596.4 ms | 1002.4 ms | 3.2 ms | 0.7 ms | +| CFG | 1464.2 ms | 1069.7 ms | 53.5 ms | 0.4 ms | +| Dataflow | 932.4 ms | 844.9 ms | 30.6 ms | 0.7 ms | ### Estimated performance at 50,000 files @@ -98,15 +100,17 @@ Extrapolated linearly from per-file metrics above. | Metric | Native (Rust) | WASM | |--------|---:|---:| -| Build time | 510.0s | 685.0s | -| DB size | 2309.5 MB | 2180.0 MB | -| Nodes | 1,405,000 | 1,405,000 | -| Edges | 2,845,000 | 2,845,000 | +| Build time | 785.0s | 750.0s | +| DB size | 1956.4 MB | 1824.2 MB | +| Nodes | 1,265,000 | 1,200,000 | +| Edges | 2,570,000 | 2,460,000 | ### Incremental Rebuilds | Version | Engine | No-op (ms) | 1-file (ms) | |---------|--------|----------:|-----------:| +| 3.9.2 | native | 9 ↓47% | 558 ↓27% | +| 3.9.2 | wasm | 20 ↑33% | 624 ↓2% | | 3.9.1 | native | 17 ↑113% | 767 ↑36% | | 3.9.1 | wasm | 15 ~ | 639 ↑14% | | 3.9.0 | native | 8 ~ | 562 ↑1238% | @@ -153,6 +157,8 @@ Extrapolated linearly from per-file metrics above. | Version | Engine | fn-deps (ms) | fn-impact (ms) | path (ms) | roles (ms) | |---------|--------|------------:|--------------:|----------:|----------:| +| 3.9.2 | native | 2.3 ↑5% | 2.4 ↑4% | 2.5 ↑14% | 33.2 ↑30% | +| 3.9.2 | wasm | 2.4 ↑9% | 2.4 ↑9% | 2.4 ↑9% | 35.4 ↑35% | | 3.9.1 | native | 2.2 ↑5% | 2.3 ↑5% | 2.2 ~ | 25.5 ~ | | 3.9.1 | wasm | 2.2 ↑5% | 2.2 ~ | 2.2 ↑5% | 26.3 ~ | | 3.9.0 | native | 2.1 ↓5% | 2.2 ~ | 2.2 ~ | 25.9 ↓13% | @@ -252,6 +258,947 @@ pre-parse that previously added ~388ms on native builds.