Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/introduction/performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ for why that matters and which cells it moved.

## Results

Measured 2026-09-12 with modern-di `main` at `18bbe64` (3.4.0 plus the template resolver of
#470, unreleased when measured) on an Apple M2 (macOS 26.6.2), CPython 3.14.7, median over 5 runs
Measured 2026-09-12 with modern-di at `18bbe64` (the template resolver of #470, first released
in 3.5.0) on an Apple M2 (macOS 26.6.2), CPython 3.14.7, median over 5 runs
(ratios paired within each run); the footnote under each table bounds the across-run dispersion
of each side's own median. Rival versions: dishka 1.10.1, dependency-injector 4.49.1,
that-depends 4.1.0, wireup 2.12.0. Generated by `just bench-report`.
Expand Down Expand Up @@ -276,7 +276,7 @@ context-backed parameter had its binding folded into the compiled closure. Toget
worth −27 to −34% across C1, C3 and the whole by-type column, against rivals whose absolutes did
not move between the two publications.

#470 (after 3.4.0) replaced the closures with a source template. The closure compiler had grown
#470, in 3.5.0, replaced the closures with a source template. The closure compiler had grown
seven near-identical closures with a comment on each explaining why it could not share code with
the others; every all-Python single-copy design that was tried cost 25-80% on a chain, because on
CPython 3.12+ a closure's size costs on every call, not only its frames. A `Factory` resolver is
Expand Down
Loading