Comparative performance evidence¶
resolve_cached_singleton¶
| Measure | Result |
|---|---|
| Claim | What does one resolution cost once the value is already built? |
| Status | loss |
| Noise allowance | 2.4% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +1.781 µs |
| Absolute target | 500.000 ns |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | equivalent | matches the singleton or transient provider lifecycle and construction shape | 149.450 ns | 1.876 µs | [+1149.99%, +1193.26%] | [+1160.32%, +1177.21%] | [+373.47%, +685.01%] |
| dishka-1.10.1 | equivalent | matches the singleton, transient, or request-scoped provider lifecycle and construction shape | 896.049 ns | 1.876 µs | [+104.23%, +112.21%] | [+101.02%, +107.55%] | [+94.18%, +133.82%] |
| wireup-2.12.0 | equivalent | matches the singleton, transient, or request-scoped provider lifecycle and construction shape | 284.601 ns | 1.876 µs | [+553.68%, +568.56%] | [+565.64%, +580.02%] | [+148.28%, +501.46%] |
| svcs-26.2.0 | partial | per-container caching has no singleton single-flight guarantee or nested lifetime contract | — | — | — | — | — |
resolve_cached_singleton_through_an_alias¶
| Measure | Result |
|---|---|
| Claim | What does a second name for a binding add to a resolution? |
| Status | no-equivalent-competitor |
| Noise allowance | 2.7% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +3.823 µs |
| Absolute target | 1.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector delegates do not provide depin typed-key alias resolution | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka alias resolution does not demonstrate depin typed-key alias cache semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup alias resolution does not demonstrate depin typed-key alias cache semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no depin typed-key alias resolution | — | — | — | — | — |
resolve_singleton_through_a_two_deep_decoration_chain¶
| Measure | Result |
|---|---|
| Claim | What do two stacked decorators add to a resolution? |
| Status | no-equivalent-competitor |
| Noise allowance | 3.3% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +1.809 µs |
| Absolute target | 1.500 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector provider composition does not model depin decoration chains | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka provider composition does not model depin decoration chains | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup provider composition does not model depin decoration chains | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs registrations do not model depin decoration chains | — | — | — | — | — |
resolve_a_collection_of_10¶
| Measure | Result |
|---|---|
| Claim | What does gathering a multi-binding into a list cost, by member count? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.6% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +19.184 µs |
| Absolute target | 5.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector has no depin collection binding and aggregation operation | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka has no depin collection binding and aggregation operation | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup has no depin collection binding and aggregation operation | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no depin collection binding and aggregation operation | — | — | — | — | — |
resolve_a_collection_of_100¶
| Measure | Result |
|---|---|
| Claim | What does gathering a multi-binding into a list cost, by member count? |
| Status | no-equivalent-competitor |
| Noise allowance | 0.9% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +137.114 µs |
| Absolute target | 50.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector has no depin collection binding and aggregation operation | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka has no depin collection binding and aggregation operation | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup has no depin collection binding and aggregation operation | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no depin collection binding and aggregation operation | — | — | — | — | — |
resolve_a_transient_chain¶
| Measure | Result |
|---|---|
| Claim | What does depin add to constructing a dependency chain that is never cached? |
| Status | competitive |
| Noise allowance | 2.4% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +2.322 µs |
| Absolute target | 10.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | equivalent | matches the singleton or transient provider lifecycle and construction shape | 17.373 µs | 4.566 µs | [-74.14%, -73.26%] | [-84.38%, -74.15%] | [-69.96%, -53.62%] |
| dishka-1.10.1 | equivalent | matches the singleton, transient, or request-scoped provider lifecycle and construction shape | 7.130 µs | 4.566 µs | [-36.97%, -33.33%] | [-42.19%, -38.71%] | [-58.27%, -7.45%] |
| wireup-2.12.0 | equivalent | matches the singleton, transient, or request-scoped provider lifecycle and construction shape | 7.460 µs | 4.566 µs | [-39.97%, -37.30%] | [-65.17%, -52.67%] | [-58.91%, -20.64%] |
| svcs-26.2.0 | incomparable | svcs does not expose the depin provider operation this workload measures | — | — | — | — | — |
open_and_close_a_scope¶
| Measure | Result |
|---|---|
| Claim | What does one scope cost, from entry to teardown? |
| Status | loss |
| Noise allowance | 2.4% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +189.805 µs |
| Absolute target | 12.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | provider overrides are substitutions, not nested scope frames with scoped caches | — | — | — | — | — |
| dishka-1.10.1 | equivalent | matches the singleton, transient, or request-scoped provider lifecycle and construction shape | 10.374 µs | 193.141 µs | [+1601.06%, +1896.95%] | [+1823.28%, +2329.04%] | [+1092.45%, +2389.32%] |
| wireup-2.12.0 | equivalent | matches the singleton, transient, or request-scoped provider lifecycle and construction shape | 9.663 µs | 193.141 µs | [+1788.45%, +2107.39%] | [+1069.22%, +1580.76%] | [+111.32%, +915.97%] |
| svcs-26.2.0 | incomparable | svcs containers have no nested scope frames with scoped caches | — | — | — | — | — |
call_through_an_inject_wrapper¶
| Measure | Result |
|---|---|
| Claim | What does calling a function whose dependency depin supplies cost? |
| Status | no-equivalent-competitor |
| Noise allowance | 2.7% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +5.706 µs |
| Absolute target | 1.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector wiring does not share depin injection wrapper calling semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka injection does not share depin injection wrapper calling semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup injection does not share depin injection wrapper calling semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no depin injection wrapper calling semantics | — | — | — | — | — |
call_through_an_inject_wrapper_with_explicit_arguments¶
| Measure | Result |
|---|---|
| Claim | What does an argument the caller supplies add to an injected call? |
| Status | no-equivalent-competitor |
| Noise allowance | 2.8% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +6.657 µs |
| Absolute target | 1.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector wiring does not share depin injection wrapper calling semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka injection does not share depin injection wrapper calling semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup injection does not share depin injection wrapper calling semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no depin injection wrapper calling semantics | — | — | — | — | — |
resolve_an_async_singleton¶
| Measure | Result |
|---|---|
| Claim | What does depin add to driving one coroutine through an event loop? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.0% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +3.632 µs |
| Absolute target | 500.000 ns |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector async and resource providers have different resolution and teardown semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka async and resource providers have different resolution and teardown semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup async and resource providers have different resolution and teardown semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs async factories and cleanup do not share depin resolution and teardown semantics | — | — | — | — | — |
resolve_with_no_active_override¶
| Measure | Result |
|---|---|
| Claim | What does the override check cost on a resolution nothing has overridden? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.9% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +1.770 µs |
| Absolute target | 500.000 ns |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector provider overrides are not depin context-local override frames | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka provider substitution is not a depin context-local override frame | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup provider substitution is not a depin context-local override frame | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no depin context-local override frames | — | — | — | — | — |
resolve_through_an_active_override¶
| Measure | Result |
|---|---|
| Claim | What does a resolution cost while an override for that key is installed? |
| Status | no-equivalent-competitor |
| Noise allowance | 2.0% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +3.899 µs |
| Absolute target | 1.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector provider overrides are not depin context-local override frames | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka provider substitution is not a depin context-local override frame | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup provider substitution is not a depin context-local override frame | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no depin context-local override frames | — | — | — | — | — |
resolve_a_generic_key¶
| Measure | Result |
|---|---|
| Claim | What does a parameterised generic key cost at resolution time? |
| Status | no-equivalent-competitor |
| Noise allowance | 4.0% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +5.948 µs |
| Absolute target | 500.000 ns |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector providers are not resolved from depin parameterised generic keys | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka providers are not resolved from depin parameterised generic keys | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup providers are not resolved from depin parameterised generic keys | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs services are not resolved from depin parameterised generic keys | — | — | — | — | — |
construct_a_singleton_for_the_first_time¶
| Measure | Result |
|---|---|
| Claim | What does the first resolution of a singleton cost, before anything is cached? |
| Status | absolute-failure |
| Noise allowance | 4.3% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +5.559 µs |
| Absolute target | 500.000 ns |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | equivalent | matches the singleton or transient provider lifecycle and construction shape | 5.698 µs | 5.857 µs | [+1.46%, +3.72%] | [+1.97%, +6.15%] | [-16.19%, +18.66%] |
| dishka-1.10.1 | incomparable | Dishka does not expose the depin provider operation this workload measures | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup does not expose the depin provider operation this workload measures | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs does not expose the depin provider operation this workload measures | — | — | — | — | — |
resolve_a_sync_resource_with_teardown¶
| Measure | Result |
|---|---|
| Claim | What does one resource with a teardown cost, from open to drain? |
| Status | no-equivalent-competitor |
| Noise allowance | 4.5% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +14.175 µs |
| Absolute target | 3.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector async and resource providers have different resolution and teardown semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka async and resource providers have different resolution and teardown semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup async and resource providers have different resolution and teardown semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs async factories and cleanup do not share depin resolution and teardown semantics | — | — | — | — | — |
warmup_a_cold_singleton_graph¶
| Measure | Result |
|---|---|
| Claim | What does building every singleton in a graph cost at startup? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.8% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +11.748 ms |
| Absolute target | 500.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | Dependency Injector has no separate frozen resolution plan or depin graph diagnostics operation | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka has no separate frozen resolution plan or depin graph diagnostics operation | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup has no separate frozen resolution plan or depin graph diagnostics operation | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no separate frozen resolution plan or depin graph diagnostics operation | — | — | — | — | — |
open_a_request_shaped_scope¶
| Measure | Result |
|---|---|
| Claim | What does one request cost an integration that opens a scope, seeds it, and resolves? |
| Status | no-equivalent-competitor |
| Noise allowance | 2.0% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +25.847 µs |
| Absolute target | 3.500 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | provider overrides are substitutions, not nested scope frames with scoped caches | — | — | — | — | — |
| dishka-1.10.1 | incomparable | Dishka does not expose the depin provider operation this workload measures | — | — | — | — | — |
| wireup-2.12.0 | incomparable | Wireup does not expose the depin provider operation this workload measures | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs containers have no nested scope frames with scoped caches | — | — | — | — | — |
fastapi_cpu_light_endpoint¶
| Measure | Result |
|---|---|
| Claim | On the cheapest possible endpoint, how much of a request does depin account for? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.5% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +81.555 µs |
| Absolute target | 12.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no FastAPI integration with depin request lifecycle and declaration semantics | — | — | — | — | — |
fastapi_request_scoped_graph¶
| Measure | Result |
|---|---|
| Claim | What does a request-scoped service graph cost inside a real request? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.8% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +122.907 µs |
| Absolute target | 16.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | provider overrides are substitutions, not nested scope frames with scoped caches | — | — | — | — | — |
| dishka-1.10.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no FastAPI integration with depin request lifecycle and declaration semantics | — | — | — | — | — |
fastapi_singletons_and_transients¶
| Measure | Result |
|---|---|
| Claim | What does mixing cached singletons with transient request services cost? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.6% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +95.159 µs |
| Absolute target | 16.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no FastAPI integration with depin request lifecycle and declaration semantics | — | — | — | — | — |
fastapi_async_resource_teardown¶
| Measure | Result |
|---|---|
| Claim | What does an async resource with deterministic teardown cost inside a request? |
| Status | no-equivalent-competitor |
| Noise allowance | 1.6% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +139.588 µs |
| Absolute target | 18.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no FastAPI integration with depin request lifecycle and declaration semantics | — | — | — | — | — |
fastapi_endpoint_with_work¶
| Measure | Result |
|---|---|
| Claim | At what amount of application work does the resolution cost stop mattering? |
| Status | no-equivalent-competitor |
| Noise allowance | 0.8% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +133.365 µs |
| Absolute target | 12.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no FastAPI integration with depin request lifecycle and declaration semantics | — | — | — | — | — |
fastapi_application_startup¶
| Measure | Result |
|---|---|
| Claim | What does wiring the application through depin add to process startup? |
| Status | no-equivalent-competitor |
| Noise allowance | 0.8% |
| Material p50 margin | 25.0% |
| Material p95/p99 margin | 20.0% |
| Direct overhead | +913.036 µs |
| Absolute target | 30.000 µs |
| Secondary verdict | — |
| Candidate | Classification | Reason | Candidate median | depin median | p50 95% CI vs depin | p95 95% CI vs depin | p99 95% CI vs depin |
|---|---|---|---|---|---|---|---|
| dependency-injector-4.49.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| dishka-1.10.1 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| wireup-2.12.0 | incomparable | the FastAPI integration has different request lifecycle and dependency declaration semantics | — | — | — | — | — |
| svcs-26.2.0 | incomparable | svcs has no FastAPI integration with depin request lifecycle and declaration semantics | — | — | — | — | — |
Provenance¶
| Property | Value |
|---|---|
| Source revision | 4ea1475bd0110b2b7824431d80672eda10059fba |
| Harness revision | 4ea1475bd0110b2b7824431d80672eda10059fba |
| Dependency versions | dependency-injector 4.49.1, dishka 1.10.1, pydepin 0.18.0, svcs 26.2.0, wireup 2.12.0 |
| Host | Linux x86_64 Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz |
| Collection command | python -m pytest benchmarks/test_comparison.py --benchmark-only -q --benchmark-json={report} |