Repository navigation
Index active providers during dependency graph traversal - #743
Merged
Merged
Conversation
There was a problem hiding this comment.
Benchmark
Details
| Benchmark suite | Current: 26f6893 | Previous: 97bcd5d | Ratio |
|---|---|---|---|
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type |
5189617.195156841 iter/sec (stddev: 5.793272894927075e-9) |
3699850.9255874944 iter/sec (stddev: 1.376854715789107e-8) |
0.71 |
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry |
5159998.658428732 iter/sec (stddev: 1.1335113453453346e-8) |
3508592.9300299203 iter/sec (stddev: 2.5891891337702616e-8) |
0.68 |
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve |
22355.300123513254 iter/sec (stddev: 0.00003995491631742121) |
14165.19362577081 iter/sec (stddev: 0.000060649980088460166) |
0.63 |
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached |
18194.68811602397 iter/sec (stddev: 0.00011645938706598598) |
11357.723740936732 iter/sec (stddev: 0.00026127632918110984) |
0.62 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] |
672.8339465077889 iter/sec (stddev: 0.000013747259729972299) |
422.04808962536663 iter/sec (stddev: 0.00012601608327816885) |
0.63 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] |
652.1369451464437 iter/sec (stddev: 0.00001896018245175829) |
423.628515795218 iter/sec (stddev: 0.0001446679735805736) |
0.65 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] |
566.8650986165928 iter/sec (stddev: 0.0001345641711884285) |
404.2998584103321 iter/sec (stddev: 0.000092606182422299) |
0.71 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] |
19564.057370489107 iter/sec (stddev: 0.000006637850687104273) |
13491.087618588588 iter/sec (stddev: 0.00001199873573007289) |
0.69 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] |
9500.887501748066 iter/sec (stddev: 0.000013458993430111735) |
6670.13439540484 iter/sec (stddev: 0.000023909310520331817) |
0.70 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] |
5015.662241292991 iter/sec (stddev: 0.00002667907868259121) |
3599.650689929737 iter/sec (stddev: 0.00003635546645356621) |
0.72 |
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] |
15203.398668368141 iter/sec (stddev: 0.000008048256242517847) |
10358.50080732401 iter/sec (stddev: 0.000014073774178185547) |
0.68 |
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] |
6789.672907647525 iter/sec (stddev: 0.000015578904971176883) |
4371.102365446031 iter/sec (stddev: 0.000019782923858144132) |
0.64 |
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] |
2982.241793892738 iter/sec (stddev: 0.000040819432842802524) |
2067.4041637129326 iter/sec (stddev: 0.00004360325316261725) |
0.69 |
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[1] |
51453.78378002459 iter/sec (stddev: 0.0000027030242347736175) |
40558.8605372135 iter/sec (stddev: 0.000005084817026047298) |
0.79 |
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[2] |
21591.45194423785 iter/sec (stddev: 0.000009457249558517034) |
14060.620490376548 iter/sec (stddev: 0.000017260393680348955) |
0.65 |
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[4] |
8371.54945666164 iter/sec (stddev: 0.0000236077851602294) |
6358.909237195522 iter/sec (stddev: 0.000028349052225105085) |
0.76 |
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container |
2193383.494197578 iter/sec (stddev: 2.0540451761717617e-8) |
1586480.4577673606 iter/sec (stddev: 3.762009590005746e-8) |
0.72 |
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope |
2335402.986917636 iter/sec (stddev: 1.4545049695973068e-8) |
1616806.5096739451 iter/sec (stddev: 3.434303966440814e-8) |
0.69 |
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch |
4578.4755126225 iter/sec (stddev: 0.00000631844764542717) |
3207.9407538232276 iter/sec (stddev: 0.000011231566584996495) |
0.70 |
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control |
75764.41274852087 iter/sec (stddev: 0.0000010497869344239253) |
54913.80818764173 iter/sec (stddev: 0.0000023437217869468475) |
0.72 |
benchmarks/test_guard_lifecycle.py::test_g7b_request_cycle_sync |
578380.6406362826 iter/sec (stddev: 5.489243961645404e-8) |
413011.71092513134 iter/sec (stddev: 9.211248300820136e-8) |
0.71 |
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale |
91617.17004901139 iter/sec (stddev: 9.143291628232096e-7) |
62777.69099313747 iter/sec (stddev: 0.0000016468032451379733) |
0.69 |
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers |
801.0878278798929 iter/sec (stddev: 0.0010601933574744583) |
553.2167596549203 iter/sec (stddev: 0.0013037444848985635) |
0.69 |
benchmarks/test_guard_resolve.py::test_g1_transient_resolve |
3031758.963732561 iter/sec (stddev: 3.105548521005536e-8) |
1937385.539864514 iter/sec (stddev: 3.124409297417119e-8) |
0.64 |
benchmarks/test_guard_resolve.py::test_g2_cached_resolve |
4789634.6940342765 iter/sec (stddev: 2.3318018044761813e-8) |
3047407.203467646 iter/sec (stddev: 3.44390870855922e-8) |
0.64 |
benchmarks/test_guard_resolve.py::test_g3_deep_chain |
1179503.6819575788 iter/sec (stddev: 3.068169931122921e-8) |
767261.3568814585 iter/sec (stddev: 7.86118308454073e-8) |
0.65 |
benchmarks/test_guard_resolve.py::test_g4_wide_resolve |
592397.6191713023 iter/sec (stddev: 3.22664364048933e-7) |
452242.8293440293 iter/sec (stddev: 4.04487202774168e-7) |
0.76 |
benchmarks/test_guard_resolve.py::test_g5_cross_scope |
2736441.735006388 iter/sec (stddev: 1.759045243700755e-8) |
1705023.8057325385 iter/sec (stddev: 5.593521759980956e-8) |
0.62 |
benchmarks/test_guard_resolve.py::test_g9_context_resolve |
2033093.8890666456 iter/sec (stddev: 1.1757410237211872e-7) |
1387244.61867959 iter/sec (stddev: 1.427218339492765e-7) |
0.68 |
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve |
1167753.4461335542 iter/sec (stddev: 2.3782576121366854e-8) |
762986.4587083632 iter/sec (stddev: 4.902203981247507e-8) |
0.65 |
benchmarks/test_guard_resolve.py::test_g18_alias_hop |
5048142.8766381545 iter/sec (stddev: 4.713303637124033e-9) |
2807898.889157946 iter/sec (stddev: 1.3550385106235307e-8) |
0.56 |
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain |
64105.99952742538 iter/sec (stddev: 0.0000014410012437698801) |
40087.41890190946 iter/sec (stddev: 0.0000035421063046108555) |
0.63 |
benchmarks/test_guard_validate.py::test_g11_validate_wide |
37319.24609778009 iter/sec (stddev: 0.0000017440728975806487) |
23917.250331925698 iter/sec (stddev: 0.000005996614565270314) |
0.64 |
benchmarks/test_guard_validate.py::test_g11b_validate_shared_alias_chain |
3852.042527771898 iter/sec (stddev: 0.000009884365119327207) |
2589.186688837534 iter/sec (stddev: 0.00001643739005892647) |
0.67 |
This comment was automatically generated by workflow using github-action-benchmark.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Store the path index for each active provider so cycle detection can locate the start directly. The ordered path still supplies the providers used in cycle diagnostics.
All 1,128 tests passed, including the traversal event order and cycle diagnostics tests. Ruff and ty also passed. Across three paired benchmark runs, deep-chain and wide-fan-out validation stayed within 1.1% of baseline. Shared-alias validation ranged from 4.0% slower to 1.8% faster.