Skip to content

Benchmarks ​

Measured by scripts/bench.py in the bench workflow on a standard GitHub-hosted ubuntu-latest runner. Anyone can re-run it.

Run 36094170937 (repomap 1.0.0, 4 vCPU ubuntu-latest):

RepositoryCode filesSymbolsResolved callsCold indexWarm indexPeak RSS
kubernetes (Go)11,710101,176200,15711.2 s1.88 s456 MB
vscode (TypeScript)6,12595,785182,5068.0 s1.35 s320 MB
django (Python)2,27141,01959,6432.2 s0.42 s125 MB
rust-analyzer (Rust)1,51229,02459,4381.8 s0.31 s101 MB

Query latency over MCP stdio, p50 / p95:

Repositorysearchcontextimpacttrace
kubernetes57.3 / 68.2 ms0.8 / 4.2 ms5.3 / 9.8 ms0.4 / 0.5 ms
vscode6.6 / 47.6 ms1.6 / 2.2 ms6.4 / 9.0 ms0.3 / 0.3 ms
django20.9 / 26.0 ms0.3 / 1.9 ms0.8 / 3.2 ms0.2 / 0.3 ms
rust-analyzer3.6 / 17.3 ms0.4 / 1.1 ms1.7 / 2.9 ms0.3 / 0.3 ms

Method ​

  • Corpora: shallow clones at fixed tags: microsoft/vscode 1.104.0 (TypeScript), rust-lang/rust-analyzer 2026-09-21 (Rust), django/django 5.2.6 (Python) and kubernetes/kubernetes v1.34.1 (Go).
  • Cold index: repomap index <repo> --no-cache, the median of 3 runs. This covers the walk, tree-sitter parse, import and call resolution, PageRank, Louvain and BM25.
  • Warm index: the same command with the per-file cache populated. This is what a restart of the MCP server costs.
  • Peak RSS: the highest resident memory of the index runs.
  • Query latency: one long-lived repomap mcp process, with the round trip measured over stdio JSON-RPC. search runs 5 phrases plus the 10 most used symbol names. context, impact and trace (callers) each run on those 10 symbols. The table shows p50; p95 is in the JSON artifact.

Versus GitNexus ​

We have not run GitNexus in this benchmark. Its PolyForm Noncommercial licence does not allow use for a company's commercial purposes, and a vendor benchmark could count as one. Its README documents its own performance. You are welcome to run both tools on the same corpora on your own machine.

MIT licensed · local, no API key