Sverklo performance benchmarks
Search latency, impact-analysis time, cold-start, and DB size on five real OSS codebases. Pure performance numbers — for retrieval F1 and token economy, see the 90-task retrieval bench.
Latency Results
Five real open-source codebases. All measurements on Apple Silicon, Node 22. Reproducible: npm run bench in the sverklo repo.
| Repo | Files | Chunks | Search p50 | Search p95 | Impact | Cold Index | DB Size |
|---|---|---|---|---|---|---|---|
| gin-gonic/gin (Go) | 99 | 1,413 | 11 ms | 12 ms | 0.75 ms | 10.3 s | 4.2 MB |
| microsoft/TypeScript (TS) | 707 | 10,873 | 20 ms | 35 ms | 2.44 ms | 71.1 s | 47 MB |
| nestjs/nest (TS/JS) | 1,709 | 2,976 | 14 ms | 14 ms | 0.88 ms | 22.4 s | 11 MB |
| django/django (Python) | 2,942 | 10,900 | 20 ms | 22 ms | 2.0 ms | 67.9 s | 56 MB |
| facebook/react (TS/JS) | 4,368 | 20,144 | 23 ms | 26 ms | 1.18 ms | 152 s | 67 MB |
MCP Server Comparison
Feature comparison across code intelligence MCP servers. Green = has the feature, dash = does not.
| Server | Hybrid Search | PageRank | Impact Analysis | Diff Review | Cross-Repo | Memory | Local-First | Open Source |
|---|---|---|---|---|---|---|---|---|
| Sverklo | BM25+Vec+PR | Yes | Yes | Yes | GraphQL | Bi-temporal | Yes | MIT |
| Claude Context | BM25+Vec | — | — | — | — | — | Partial | Apache-2.0 |
| Code-Index-MCP | Vec | — | — | — | — | — | Yes | OSS |
| AiDex | Identifier | — | — | — | Link | Session | Yes | MIT |
| Repomix | Pack | — | — | — | — | — | Yes | MIT |
Community submissions welcome — open an issue to add your MCP server to this table.
What We Measure
- Search Relevance — 10 natural-language queries per repo, results manually graded
- Search Latency — p50 and p95 across 9 queries (first dropped as warmup)
- Impact Analysis — time to walk the call graph for the most-referenced symbol in each repo
- Token Efficiency — useful context per token returned (compact mode vs full)
- Cold Index Time — full parse → chunk → embed → PageRank pipeline
Key Findings
- Search stays fast at scale. p95 latency: 12ms on 99 files, 26ms on 4,368 files. Sub-linear scaling.
- Impact analysis is sub-3ms everywhere. Even on the TypeScript compiler (10,873 chunks), it's an indexed SQL join — not grep.
- Indexing is linear in chunks. ~7ms per chunk regardless of language. A 20k-chunk repo takes ~2.5 min cold-start, then incremental updates only.
- Steady-state RAM ~200MB. Peak during indexing is 400-700MB (ONNX embedder batching), drops back after.
Reproduce It
npm install -g sverklo git clone https://github.com/sverklo/sverklo cd sverklo npm install && npm run build npm run bench
Full methodology and raw data: BENCHMARKS.md