Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Benchmarks

Measured with criterion on the CI runner (ubuntu-latest) and on a local developer machine. Results below are the local run from 2026-08-03, machine: x86_64 Linux, release profile, --features watch.

Raw criterion reports are uploaded as CI artifacts from .github/workflows/benchmark.yml. To reproduce locally:

cargo bench --features watch

Pipeline (extraction)

End-to-end extraction across the per-language fixture suites:

BenchmarkTime
extract/python_fixtures137 us
extract/javascript_fixtures11.5 ms
extract/rust_fixtures14.1 ms
extract/go_fixtures126 us
extract/c_fixtures113 us
extract/cpp_fixtures173 us
extract/typescript_fixtures121 us
extract/tsx_fixtures165 us
extract/mixed_fixtures459 us
extract/all_fixtures16.8 ms

Graph

Graph construction, Tarjan SCC, edge deduplication, and node lookup at scale:

BenchmarkTime
graph_construction_linear/103.6 us
graph_construction_linear/10040.8 us
graph_construction_linear/1000425 us
scc_acyclic_chain/1000157 us
scc_single_cycle/100054 us
scc_multiple_cycles/100_cycles15.2 us
scc_dense_graph/200356 us
edge_deduplication/10000_duplicates486 us
node_lookup/100009.5 us
full_pipeline/python_extraction_to_scc149 us
ownership_graph_only/50001.03 ms

Datagraph and dataflow

BenchmarkTime
datagraph_export/1000325 us
datagraph_pipeline/python_to_datagraph155 us
dataflow_nodes_edges/5000344 us

Incremental re-analysis

Requires --features watch. Cold analyze_graph vs warm incremental_reanalyze after a single-file change (FR-5 target: <100 ms for files under 5k LOC):

BenchmarkTime
incremental/cold_analyze_graph1.66 ms
incremental/warm_incremental_reanalyze_single_change1.16 ms