Files
cherrypick/benchmark_cherrypick

benchmark_cherrypick

Benchmarks for performance and features of the cherrypick (core) DI container.

All scenarios use the public API capabilities of cherrypick (scope, module, binding, scoping, and async support).

Scenarios

  • RegisterAndResolve: basic registration and resolution of a dependency.
  • ChainSingleton (A->B->C, singleton): dependency chain, all as singletons.
  • ChainFactory (A->B->C, factory): dependency chain with factory bindings (new instance on each request).
  • NamedResolve (by name): resolving a named dependency among multiple implementations.
  • AsyncChain (A->B->C, async): asynchronous dependency chain.
  • ScopeOverride (child overrides parent): overriding a dependency in a child scope over a parent.

Benchmark results

Scenario RunTime (μs)
RegisterAndResolve 0.3407
ChainSingleton (A->B->C, singleton) 0.3777
ChainFactory (A->B->C, factory) 0.9688
NamedResolve (by name) 0.3878
AsyncChain (A->B->C, async) 1.8006
ScopeOverride (child overrides parent) 0.3477

How to run

  1. Get dependencies:
    dart pub get
    
  2. Run the benchmarks:
    dart run bin/main.dart
    

A text report with all metrics will be displayed in the console.


To add your custom scenario — just create a new Dart file and declare a class extending BenchmarkBase or AsyncBenchmarkBase, then add its invocation to main.dart.