Skip to content

perf(scip-csharp): precompute C# references at index build - #341

Merged
flupkede merged 6 commits into
developfrom
perf/csharp-refs-at-index
Oct 16, 2026
Merged

flupkede merged 6 commits into
developfrom
perf/csharp-refs-at-index

Conversation

@flupkede

Copy link
Copy Markdown
Owner

Why: C# find_impact paid the full reference cost per request. Measured on a 13-project workspace: 80k refs, 25 MB JSON, 31 s cold. This emits references in one scip-csharp pass and ingests them at rebuild. Gaps pinned in tests (oversized precomputed key, restore-pending state, query-clause and event parity). Not yet deployed.

The rebuild is about to absorb the reference pass; per-stage [TIMING] lines (msbuild register, workspace open, compile, definitions, output) show where a cold rebuild spends its time before and after.
References are collected during the single symbol walk instead of a per-symbol FindReferences pass. Index 2.1 carries them precomputed; parity tests pin the output to the per-symbol results.
Rebuild reads the references shipped by scip-csharp index 2.1 into scip_ref_cache and stamps refs_coverage, so find_impact no longer needs a helper run per request. Prewarm skips covered workspaces; the workspace idle timeout rises to 3600s to keep them warm.
…ume guard

Roslyn reports zero references for query clauses and 2 for event += / -=; pin that behaviour. The volume guard pins the N x M cascade fan-out to FindReferencesAsync (measured 80k refs / 25 MB on a 13-project solution).
The change is user-visible and the require-changelog check blocks PR #341 without an entry.
@flupkede
flupkede merged commit dcd0e6a into develop Oct 16, 2026
3 checks passed
@flupkede
flupkede deleted the perf/csharp-refs-at-index branch October 22, 2026 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant