Skip to content

Performance

FastDI ships with a small benchmark suite that exercises common injection paths. Use it to measure the library on your own hardware.

How to Run

uv sync --dev
uv run maturin develop -r -q
uv run python -m benchmarks.benchmarks

To change the number of calls:

uv run python - <<'PY'
from benchmarks.benchmarks import run_all
run_all(100_000)  # 100k calls
PY

For deep graph validation you can enable the large-scale tests (functional, not timed by default):

FASTDI_RUN_LARGE=1 FASTDI_LARGE_N=3000 uv run python -m pytest -q -s tests/test_large_scale.py

Sample Results

  • Machine: Apple M4 Pro
  • Python: 3.11 (uv virtualenv)
  • Calls: 50,000
  • Scenario: sync function injection with two dependencies
| metric        | value  |
|---------------|--------|
| total_ms      | 55.75  |
| per_call_us   | 1.12   |

Numbers will vary with hardware and environment. Rebuild with maturin develop -r and close background workloads for consistent measurements. Setting RUSTFLAGS="-C target-cpu=native" before building can provide an extra boost on local machines.