Skip to content

Flatten wiring plan parameter classification - #745

Merged
lesnik512 merged 1 commit into
mainfrom
refactor/wiring-plan
Nov 3, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
refactor/wiring-plan

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Use early exits for resolved providers and defaulted parameters in WiringPlan.build() so the nullable and unwireable cases are easier to follow.

Benchmark Run Baseline median Candidate median Change
Wide validation 1 19.465 µs 19.362 µs −0.53%
Wide validation 2 19.404 µs 19.312 µs −0.47%
Cold first resolve 1 28.275 µs 28.097 µs −0.63%
Cold first resolve 2 27.987 µs 28.229 µs +0.86%

Wide validation was slightly faster in both paired runs. Cold first resolve moved less than 1% in opposite directions.

All 1,128 tests and just lint passed.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Details
Benchmark suite Current: ff6412f Previous: 4c426c4 Ratio
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type 3504477.5307612284 iter/sec (stddev: 2.897910432989885e-8) 4906511.573807865 iter/sec (stddev: 6.4200098481194375e-9) 1.40
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry 3209664.427979007 iter/sec (stddev: 2.806134563416421e-8) 4860800.05367101 iter/sec (stddev: 6.8731454660227405e-9) 1.51
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve 14376.380113531559 iter/sec (stddev: 0.00005502946675914798) 22086.568943179565 iter/sec (stddev: 0.00004081464955005821) 1.54
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached 11587.286800463757 iter/sec (stddev: 0.0001601683332576677) 18011.045315036405 iter/sec (stddev: 0.00015762508358782543) 1.55
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] 443.81139584498743 iter/sec (stddev: 0.00008552863671842631) 655.9112569326339 iter/sec (stddev: 0.00004303206728154271) 1.48
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] 435.9223388699755 iter/sec (stddev: 0.00006775806240416723) 619.1593333145153 iter/sec (stddev: 0.00013507831231257298) 1.42
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] 412.5354713492651 iter/sec (stddev: 0.00009821953697030827) 589.33723516232 iter/sec (stddev: 0.00012150468652764061) 1.43
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] 13902.972084656576 iter/sec (stddev: 0.000010974772887895687) 19615.820878468607 iter/sec (stddev: 0.000006646631833215622) 1.41
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] 6844.956097297299 iter/sec (stddev: 0.000023617715447061794) 9919.100641750323 iter/sec (stddev: 0.000014153065059785465) 1.45
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] 3573.3414789629774 iter/sec (stddev: 0.00003552463476114282) 5068.704815419585 iter/sec (stddev: 0.000028187297582806564) 1.42
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] 10351.65075188112 iter/sec (stddev: 0.000013416903930812703) 15080.418215129504 iter/sec (stddev: 0.000009369889214681432) 1.46
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] 4504.532235109373 iter/sec (stddev: 0.000025861108619586038) 6725.630644162258 iter/sec (stddev: 0.00001430595186217296) 1.49
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] 2090.5752893857225 iter/sec (stddev: 0.000055347190306199405) 3046.128204780117 iter/sec (stddev: 0.000030180654796270295) 1.46
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[1] 42023.85484134644 iter/sec (stddev: 0.00000394299716767674) 52294.44036039192 iter/sec (stddev: 0.000002889537201905908) 1.24
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[2] 13576.445229566669 iter/sec (stddev: 0.00001577230261110505) 22126.023190527754 iter/sec (stddev: 0.000007856849293039747) 1.63
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[4] 6390.265665704345 iter/sec (stddev: 0.00002645350247274608) 8479.636506209441 iter/sec (stddev: 0.000022230087325571974) 1.33
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container 1556485.4605007116 iter/sec (stddev: 3.7003709642025704e-8) 2083795.1327213766 iter/sec (stddev: 2.4035876682563065e-8) 1.34
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope 1637123.3434538085 iter/sec (stddev: 2.1952847453057574e-8) 2248794.4774956526 iter/sec (stddev: 2.4260438569854244e-8) 1.37
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch 3186.202411647754 iter/sec (stddev: 0.000019423374527848954) 4451.976284299646 iter/sec (stddev: 0.000023717427929595866) 1.40
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control 56666.74717548948 iter/sec (stddev: 0.000002172827293093168) 75970.29070626643 iter/sec (stddev: 0.0000013238116630361499) 1.34
benchmarks/test_guard_lifecycle.py::test_g7b_request_cycle_sync 410747.13301608426 iter/sec (stddev: 8.459133197199437e-8) 592030.7510225712 iter/sec (stddev: 6.32186990155512e-8) 1.44
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale 61521.12403065368 iter/sec (stddev: 0.0000015899612122318784) 93636.70247535929 iter/sec (stddev: 9.300497190654961e-7) 1.52
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers 567.1028788414687 iter/sec (stddev: 0.0011264377890594422) 782.6942643451193 iter/sec (stddev: 0.0017262034082747536) 1.38
benchmarks/test_guard_resolve.py::test_g1_transient_resolve 1973756.7331048115 iter/sec (stddev: 2.8933613525367724e-8) 2904364.9264678857 iter/sec (stddev: 2.8416828371745787e-8) 1.47
benchmarks/test_guard_resolve.py::test_g2_cached_resolve 2921737.122310314 iter/sec (stddev: 2.427141297352613e-8) 4759778.500871154 iter/sec (stddev: 7.047147459047135e-9) 1.63
benchmarks/test_guard_resolve.py::test_g3_deep_chain 698112.1389743412 iter/sec (stddev: 1.4189155783644053e-7) 1119409.8874063645 iter/sec (stddev: 3.842094782386879e-8) 1.60
benchmarks/test_guard_resolve.py::test_g4_wide_resolve 372009.5408541656 iter/sec (stddev: 6.317031967305872e-7) 583157.926718996 iter/sec (stddev: 3.5137586695228595e-7) 1.57
benchmarks/test_guard_resolve.py::test_g5_cross_scope 1743112.9932467581 iter/sec (stddev: 2.8778647580126605e-8) 2636774.4338187175 iter/sec (stddev: 1.9460662605202595e-8) 1.51
benchmarks/test_guard_resolve.py::test_g9_context_resolve 1357080.9379021828 iter/sec (stddev: 1.480120891705176e-7) 2012591.9829977355 iter/sec (stddev: 1.209077287083069e-7) 1.48
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve 755415.013110687 iter/sec (stddev: 4.469948714983501e-8) 1115600.4111203447 iter/sec (stddev: 2.9124085617049308e-8) 1.48
benchmarks/test_guard_resolve.py::test_g18_alias_hop 3286817.3087355946 iter/sec (stddev: 3.799698808651922e-8) 4755067.4277915 iter/sec (stddev: 5.644079151470061e-9) 1.45
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain 39933.65316377447 iter/sec (stddev: 0.00000394413244566453) 63211.34625065297 iter/sec (stddev: 0.0000017296541036264836) 1.58
benchmarks/test_guard_validate.py::test_g11_validate_wide 24565.623480647955 iter/sec (stddev: 0.000004422412851335357) 37522.30935799307 iter/sec (stddev: 0.0000020818740433960623) 1.53
benchmarks/test_guard_validate.py::test_g11b_validate_shared_alias_chain 2589.986193241391 iter/sec (stddev: 0.000029898739686844745) 3792.491314458379 iter/sec (stddev: 0.000012832995314043191) 1.46

This comment was automatically generated by workflow using github-action-benchmark.

@lesnik512
lesnik512 merged commit 47762d1 into main Nov 3, 2026
12 checks passed
@lesnik512
lesnik512 deleted the refactor/wiring-plan branch November 3, 2026 05:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant