Benchmarks
Awaiten wires the graph at build time, so there is nothing to reflect over at runtime. These benchmarks compare it against Microsoft.Extensions.DependencyInjection, Autofac, DryIoc and Simple Injector across the same graphs. Pick a scenario; every multiple is relative to Awaiten.
A per-request pattern, the shape a web app actually runs: open a scope, resolve a deep graph of mixed lifetimes rooted at a request handler, then dispose the scope.
285.7 nsper request with Awaiten
The next fastest container, DryIoc, takes 1.5× as long, and MS.DI takes 2.2× as long.
Time
lower is betterAwaiten285.7 ns
DryIoc440.8 ns1.5×
MS.DI638.0 ns2.2×
Simple Injector806.5 ns2.8×
Autofac6.96 µs24×
Memory
lower is betterAwaiten568 B
DryIoc944 B1.7×
Simple Injector1.07 KiB1.9×
MS.DI1.08 KiB1.9×
Autofac10.53 KiB19×
Bars longer than four times the fastest container are cut so the others stay comparable. Hover a bar or a multiple for the exact comparison.
| Container | Time | vs Awaiten | Memory | vs Awaiten | Time vs Awaiten, recent runs |
|---|---|---|---|---|---|
| Awaiten | 285.7 ns | baseline | 568 B | baseline | |
| DryIoc5.4.3 | 440.8 ns | 1.5× | 944 B | 1.7× | |
| MS.DI10.0.14 | 638.0 ns | 2.2× | 1.08 KiB | 1.9× | |
| Simple Injector5.6.0 | 806.5 ns | 2.8× | 1.07 KiB | 1.9× | |
| Autofac9.3.4 | 6.96 µs | 24× | 10.53 KiB | 19× |
Measured on 2026-11-07 at commit
68538ab5BenchmarkDotNet MediumRun (in-process)ubuntu-latestView the benchmark source on GitHub →How these numbers are measured
- Suite:
Awaiten.Benchmarksdriven by BenchmarkDotNet. - Job:
MediumRunwith the in-process toolchain. - Runner:
ubuntu-latestGitHub Actions agent, refreshed on every push tomain. - Sizes: Build and Resolve are measured at container sizes of 8 and 256 registrations.
- Trend: the recent runs compare each container with Awaiten in the same run, so the line does not depend on the speed of the runner. The dashed line marks equal time.