Skip to main content
Codanna’s performance has three layers, and they scale differently with your hardware. Every number on this page is machine-dependent; the reference numbers below come from one machine, with the exact commands to reproduce them on yours.

What is measured

codanna benchmark measures parsers in isolation. Full indexing adds relationship resolution, storage commits, and — when semantic search is enabled — embedding generation, which dominates wall time. The pipeline runs in parallel and scales with available cores.

Reference machine

Apple M4 Max (12 performance + 4 efficiency cores), 48 GB RAM, macOS 27.0, codanna 0.10.1 (release build), rustc 1.97.1.

Parser throughput

codanna benchmark all --info, cold pass over generated benchmark code: All benchmarked languages clear the 10,000 symbols/second target by 7.6x or more. The harness covers these seven languages; the other eight supported languages are parsed by the same tree-sitter pipeline but are not in the benchmark command.

Indexing pipeline

Corpus: the codanna v0.10.1 source tree (src/, 275 files, 7,681 symbols, 12,227 relationships). Fresh workspace per run. Embedding generation dominates semantic-enabled indexing and is the machine-dependent part: it runs on the local CPU across all cores. Parsing and relationship resolution are the fast part regardless of configuration.

Retrieval latency

Cold numbers are one-shot CLI calls (codanna mcp <tool>): each call pays process startup and index open. Warm numbers are per-request round-trips against a running codanna serve stdio session, measured over MCP tools/call, median of 20 after warmup. Cold semantic calls pay the embedding model load on every invocation; the persistent server loads it once. If your workflow leans on semantic queries, run codanna serve.

How to reproduce

Warm-server latency requires timing MCP tools/call round-trips against codanna serve from an MCP client.

Caveats

  • Every number varies with CPU, core count, memory bandwidth, and file system cache state. Expect the same order of magnitude on comparable hardware, not the same digits.
  • The embedding model downloads once on first semantic-enabled run; first-run timings include the download.
  • Corpus shape matters: symbol density, file sizes, and language mix shift pipeline rates.
  • Warm and cold timings differ by orders of magnitude for semantic queries; compare like with like.