2025-08-01 11:20:23 +03:00
|
|
|
// ignore: depend_on_referenced_packages
|
2025-08-06 14:44:12 +03:00
|
|
|
import 'package:benchmark_cherrypick/di_adapter.dart';
|
|
|
|
|
// ignore: depend_on_referenced_packages
|
2025-08-01 08:26:33 +03:00
|
|
|
import 'package:benchmark_harness/benchmark_harness.dart';
|
|
|
|
|
import 'package:cherrypick/cherrypick.dart';
|
|
|
|
|
|
|
|
|
|
class AsyncA {}
|
2025-08-06 13:29:23 +03:00
|
|
|
|
2025-08-01 08:26:33 +03:00
|
|
|
class AsyncB {
|
|
|
|
|
final AsyncA a;
|
|
|
|
|
AsyncB(this.a);
|
|
|
|
|
}
|
2025-08-06 13:29:23 +03:00
|
|
|
|
2025-08-01 08:26:33 +03:00
|
|
|
class AsyncC {
|
|
|
|
|
final AsyncB b;
|
|
|
|
|
AsyncC(this.b);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class AsyncChainModule extends Module {
|
|
|
|
|
@override
|
|
|
|
|
void builder(Scope currentScope) {
|
|
|
|
|
bind<AsyncA>().toProvideAsync(() async => AsyncA()).singleton();
|
2025-08-06 13:29:23 +03:00
|
|
|
bind<AsyncB>()
|
|
|
|
|
.toProvideAsync(
|
|
|
|
|
() async => AsyncB(await currentScope.resolveAsync<AsyncA>()))
|
|
|
|
|
.singleton();
|
|
|
|
|
bind<AsyncC>()
|
|
|
|
|
.toProvideAsync(
|
|
|
|
|
() async => AsyncC(await currentScope.resolveAsync<AsyncB>()))
|
|
|
|
|
.singleton();
|
2025-08-01 08:26:33 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-06 14:44:12 +03:00
|
|
|
class AsyncChainBenchmark extends AsyncBenchmarkBase {
|
|
|
|
|
final DIAdapter di;
|
|
|
|
|
AsyncChainBenchmark(this.di) : super('AsyncChain (A->B->C, async)');
|
2025-08-01 08:26:33 +03:00
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Future<void> setup() async {
|
2025-08-06 14:44:12 +03:00
|
|
|
di.setupModules([AsyncChainModule()]);
|
2025-08-01 08:26:33 +03:00
|
|
|
}
|
2025-08-06 13:29:23 +03:00
|
|
|
|
2025-08-01 08:26:33 +03:00
|
|
|
@override
|
|
|
|
|
Future<void> teardown() async {
|
2025-08-06 14:44:12 +03:00
|
|
|
di.teardown();
|
2025-08-01 08:26:33 +03:00
|
|
|
}
|
2025-08-06 13:29:23 +03:00
|
|
|
|
2025-08-01 08:26:33 +03:00
|
|
|
@override
|
|
|
|
|
Future<void> run() async {
|
2025-08-06 14:44:12 +03:00
|
|
|
await di.resolveAsync<AsyncC>();
|
2025-08-01 08:26:33 +03:00
|
|
|
}
|
|
|
|
|
}
|