# Benchmarks: agent instantiation, measured

URL: https://agno-com-nine.vercel.app/benchmarks

Median time and memory to create one agent, 1,000 iterations per framework, one process per framework. Measured on 2026-08-09 (Apple M4 Max · macOS 15.7 · Python 3.12.8) against published PyPI releases. Reproduce with the public harness: https://github.com/agno-agi/agno/tree/main/cookbook/09_evals/performance/comparison

| Framework | Version | Median time | Median memory | Time vs Agno | Memory vs Agno |
|---|---|---|---|---|---|
| Agno | 2.8.7 | 3.2 µs | 5.2 KiB | 1x | 1x |
| LangGraph | 1.2.10 | 1,092.8 µs | 145.4 KiB | 342x slower | 27.8x more |
| CrewAI | 1.15.14 | 18,297.6 µs | 23.6 KiB | 5,736x slower | 4.5x more |

## Benchmark FAQ

**Why does every request need its own agent?**

Because agents hold state: conversation history, memory and whatever a tool cached along the way. Share one agent between users and that state travels with it, which is how user A’s data ends up in user B’s session. Externalizing state helps only if every tool you ever write remains stateless, an invariant no framework can verify for you. The sound approach is the one FastAPI takes with database sessions: give every request its own. An object cannot leak state it never shared. The open question is whether instantiation is cheap enough to repeat on every request, and that is what these numbers measure.

**What exactly do these benchmarks measure?**

Each script instantiates one agent with one tool and a model binding; we record the median time and memory over 1,000 runs, with every framework in its own process. The harness is open source in the Agno repository. It measures construction alone. Inference is a separate question, and model calls dominate it in every framework.

**When do these numbers not matter?**

With a single tenant, they do not. With a shared object you can prove holds no state, they do not either. They begin to matter the moment you serve more than one user, because from then on you pay the instantiation cost on every request, multiplied by your request rate.

