Repository navigation
docs: regenerate the performance tables after the per-factory code change - #708
Merged
Merged
Conversation
There was a problem hiding this comment.
Benchmark
Details
| Benchmark suite | Current: 54f1e1c | Previous: 1fe9404 | Ratio |
|---|---|---|---|
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type |
3320957.012132102 iter/sec (stddev: 1.1938086467269671e-8) |
5178696.623565742 iter/sec (stddev: 5.414322976795206e-9) |
1.56 |
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry |
3331223.78035057 iter/sec (stddev: 1.4790890137353807e-8) |
5173048.561866323 iter/sec (stddev: 4.944868870356742e-9) |
1.55 |
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve |
16023.527758702754 iter/sec (stddev: 0.000052008717808257516) |
23341.89100892437 iter/sec (stddev: 0.000040957484774952956) |
1.46 |
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached |
12713.762094084948 iter/sec (stddev: 0.0001280532705323862) |
18128.971481425186 iter/sec (stddev: 0.000230226555941953) |
1.43 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] |
472.5629558719837 iter/sec (stddev: 0.000050515451875524175) |
500.63779365711235 iter/sec (stddev: 0.00009568522495976157) |
1.06 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] |
469.9766829201808 iter/sec (stddev: 0.000055153807276442504) |
557.5535854996675 iter/sec (stddev: 0.00010071569364556589) |
1.19 |
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] |
403.82844280480515 iter/sec (stddev: 0.00013292801451865268) |
569.4122020523743 iter/sec (stddev: 0.00016102760266743736) |
1.41 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] |
13476.606127693349 iter/sec (stddev: 0.00000759092088704966) |
18760.14220174014 iter/sec (stddev: 0.000007857094267724099) |
1.39 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] |
6345.95379609425 iter/sec (stddev: 0.000020953630848694298) |
9555.709667947016 iter/sec (stddev: 0.000018284080800311374) |
1.51 |
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] |
3329.988267618312 iter/sec (stddev: 0.00004192420271874652) |
4955.91200034446 iter/sec (stddev: 0.00003013749565134662) |
1.49 |
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] |
9976.021800224114 iter/sec (stddev: 0.000009628038301447758) |
14076.259543718805 iter/sec (stddev: 0.00000931467062375488) |
1.41 |
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] |
4183.459333861973 iter/sec (stddev: 0.000017172115705238353) |
5964.930088272373 iter/sec (stddev: 0.00002430283539827365) |
1.43 |
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] |
2010.368879564 iter/sec (stddev: 0.00005464951550704635) |
2879.198822617753 iter/sec (stddev: 0.00011444513604976574) |
1.43 |
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[1] |
39496.82363229264 iter/sec (stddev: 0.0000048353516943913426) |
53280.05327926116 iter/sec (stddev: 0.0000025629815202707525) |
1.35 |
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[2] |
13882.954889705179 iter/sec (stddev: 0.000013290440313554477) |
21659.336184542513 iter/sec (stddev: 0.000008141698894717914) |
1.56 |
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[4] |
5681.8711803694405 iter/sec (stddev: 0.00003530451251352048) |
8611.282200507329 iter/sec (stddev: 0.000020640219845949377) |
1.52 |
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container |
1580052.2823424013 iter/sec (stddev: 3.175697902027839e-8) |
2206752.6410179175 iter/sec (stddev: 1.7192874583285688e-8) |
1.40 |
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope |
1687703.3260639743 iter/sec (stddev: 3.165939020217187e-8) |
2363877.0278010173 iter/sec (stddev: 1.894917431566577e-8) |
1.40 |
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch |
3112.708671961348 iter/sec (stddev: 0.00001596420956953311) |
4439.610302361827 iter/sec (stddev: 0.00000816229810846762) |
1.43 |
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control |
57724.27277025886 iter/sec (stddev: 0.0000018466475476650607) |
75806.40753304795 iter/sec (stddev: 0.0000013101134732601992) |
1.31 |
benchmarks/test_guard_lifecycle.py::test_g7b_request_cycle_sync |
411245.5676206241 iter/sec (stddev: 8.85694235703082e-8) |
581927.8974458397 iter/sec (stddev: 6.294860146637674e-8) |
1.42 |
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale |
65077.86985603879 iter/sec (stddev: 0.0000015488741927788382) |
94302.42871685681 iter/sec (stddev: 0.0000010347080417754609) |
1.45 |
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers |
598.6968247486334 iter/sec (stddev: 0.000894760853536026) |
826.6166310205344 iter/sec (stddev: 0.0011973141997795621) |
1.38 |
benchmarks/test_guard_resolve.py::test_g1_transient_resolve |
2160796.4220575644 iter/sec (stddev: 3.726822866003395e-8) |
3000560.8798204404 iter/sec (stddev: 2.072957044357824e-8) |
1.39 |
benchmarks/test_guard_resolve.py::test_g2_cached_resolve |
3614360.06940675 iter/sec (stddev: 9.973134000850693e-9) |
5069344.578366031 iter/sec (stddev: 6.151691670543562e-9) |
1.40 |
benchmarks/test_guard_resolve.py::test_g3_deep_chain |
782061.8321164199 iter/sec (stddev: 4.228180980032576e-8) |
1098187.3073185228 iter/sec (stddev: 4.228505498554438e-8) |
1.40 |
benchmarks/test_guard_resolve.py::test_g4_wide_resolve |
466410.8511975815 iter/sec (stddev: 3.9888615274337577e-7) |
609703.083134297 iter/sec (stddev: 3.6902082541952153e-7) |
1.31 |
benchmarks/test_guard_resolve.py::test_g5_cross_scope |
1991335.9957706158 iter/sec (stddev: 2.3053799842117716e-8) |
2606734.7076500254 iter/sec (stddev: 2.6237384655609e-8) |
1.31 |
benchmarks/test_guard_resolve.py::test_g9_context_resolve |
1410167.9809713834 iter/sec (stddev: 1.5103813896160022e-7) |
1994396.9412285434 iter/sec (stddev: 1.473883486223868e-7) |
1.41 |
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve |
829698.8719836429 iter/sec (stddev: 4.9745572981974815e-8) |
1159115.7615864046 iter/sec (stddev: 4.834304288025477e-8) |
1.40 |
benchmarks/test_guard_resolve.py::test_g18_alias_hop |
3610433.763633581 iter/sec (stddev: 1.3868370165643838e-8) |
5004418.150554741 iter/sec (stddev: 4.873760874431247e-9) |
1.39 |
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain |
35403.2120202192 iter/sec (stddev: 0.000018852325711566874) |
53893.052686058494 iter/sec (stddev: 0.000015060637075350605) |
1.52 |
benchmarks/test_guard_validate.py::test_g11_validate_wide |
21224.238258441233 iter/sec (stddev: 0.000023332802985458138) |
31556.14456620828 iter/sec (stddev: 0.000019401454019783594) |
1.49 |
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.
Regenerates the comparison tables in
docs/introduction/performance.mdfrom main at473ce2a, so they include #694 (each factory gets its own copy of its resolver code).C3 (six-deep chain) dropped from about 760 ns to 552-557 ns. Against dishka, modern-di's C3 ratio went from 1.21 to 0.87, so modern-di is now faster on every scenario except the warm singleton lookup. The other cells moved by a few percent at most.
Changes:
just bench-report(5 runs).comparison.md.The machine had a load average of about 2.8 and was about 85% idle during the run. modern-di spreads are within 1.7% (previously 1.4%) and rival spreads within 4.7% (previously 3.8%). The widest cell is C6 against wireup at ±4.2%. All C3 cells are within 1.5%. Earlier runs on a busier machine had wider spreads, but their medians matched these to within 1-2%, and the C3 ratio against dishka was 0.87-0.88 every time.
Checked:
just lint-ci,just test-docs(218 passed),tests/test_bench_report.py, andjust docs-build.