mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-24 05:25:19 +00:00
Add complex DI benchmarks, main runner, and English README with summarized results for cherrypick core
This commit is contained in:
42
benchmark_cherrypick/README.ru.md
Normal file
42
benchmark_cherrypick/README.ru.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# benchmark_cherrypick
|
||||
|
||||
Бенчмарки производительности и функциональности DI-контейнера cherrypick (core).
|
||||
|
||||
Все сценарии используют реальные возможности public API cherrypick (scope, module, binding, scoping и асинхронность).
|
||||
|
||||
## Сценарии
|
||||
|
||||
- **RegisterAndResolve**: базовая операция регистрации и разрешения зависимости.
|
||||
- **ChainSingleton (A->B->C, singleton)**: цепочка зависимостей, все singletons.
|
||||
- **ChainFactory (A->B->C, factory)**: цепочка зависимостей с factory биндингами, новые объекты на каждый запрос.
|
||||
- **NamedResolve (by name)**: разрешение именованной зависимости среди нескольких реализаций.
|
||||
- **AsyncChain (A->B->C, async)**: асинхронная цепочка зависимостей.
|
||||
- **ScopeOverride (child overrides parent)**: переопределение зависимости в дочернем scope над родительским.
|
||||
|
||||
## Результаты исследования
|
||||
|
||||
| Сценарий | RunTime (мкс) |
|
||||
|----------------------------------------------------|--------------|
|
||||
| RegisterAndResolve | 0.1976 |
|
||||
| ChainSingleton (A->B->C, singleton) | 0.2721 |
|
||||
| ChainFactory (A->B->C, factory) | 0.6690 |
|
||||
| NamedResolve (by name) | 0.2018 |
|
||||
| AsyncChain (A->B->C, async) | 1.2732 |
|
||||
| ScopeOverride (child overrides parent) | 0.1962 |
|
||||
|
||||
## Как запускать
|
||||
|
||||
1. Получить зависимости:
|
||||
```shell
|
||||
dart pub get
|
||||
```
|
||||
2. Запустить бенчмарк:
|
||||
```shell
|
||||
dart run bin/main.dart
|
||||
```
|
||||
|
||||
Будет показан текстовый отчёт по всем метрикам.
|
||||
|
||||
---
|
||||
|
||||
Если хотите добавить свой сценарий — создайте отдельный Dart-файл и объявите новый BenchmarkBase/AsyncBenchmarkBase, не забудьте вставить его вызов в main.
|
||||
Reference in New Issue
Block a user