feat(benchmark_di): add resolve phases, eager/lazy scenarios, and adapter parity

This commit is contained in:
Klim
2026-04-22 20:33:07 +03:00
parent 59234b44c2
commit 4077ed8469
13 changed files with 383 additions and 257 deletions

View File

@@ -6,6 +6,7 @@ class CsvReport extends ReportGenerator {
@override
final List<String> keys = [
'benchmark',
'phase',
'chainCount',
'nestingDepth',
'mean_us',

View File

@@ -8,6 +8,7 @@ class MarkdownReport extends ReportGenerator {
@override
final List<String> keys = [
'benchmark',
'phase',
'chainCount',
'nestingDepth',
'mean_us',
@@ -24,7 +25,9 @@ class MarkdownReport extends ReportGenerator {
/// Friendly display names for each benchmark type.
static const nameMap = {
'Universal_UniversalBenchmark.registerSingleton': 'RegisterSingleton',
'Universal_UniversalBenchmark.registerLazySingleton': 'RegisterLazySingleton',
'Universal_UniversalBenchmark.chainSingleton': 'ChainSingleton',
'Universal_UniversalBenchmark.chainLazySingleton': 'ChainLazySingleton',
'Universal_UniversalBenchmark.chainFactory': 'ChainFactory',
'Universal_UniversalBenchmark.chainAsync': 'AsyncChain',
'Universal_UniversalBenchmark.named': 'Named',
@@ -36,6 +39,7 @@ class MarkdownReport extends ReportGenerator {
String render(List<Map<String, dynamic>> rows) {
final headers = [
'Benchmark',
'Phase',
'Chain Count',
'Depth',
'Mean (us)',
@@ -52,6 +56,7 @@ class MarkdownReport extends ReportGenerator {
final readableName = nameMap[r['benchmark']] ?? r['benchmark'];
return [
readableName,
r['phase'],
r['chainCount'],
r['nestingDepth'],
r['mean_us'],
@@ -82,6 +87,7 @@ class MarkdownReport extends ReportGenerator {
final legend = '''
> **Legend:**
> `Benchmark` Test name
> `Phase` `firstResolve` or `steadyStateResolve`
> `Chain Count` Number of independent chains
> `Depth` Depth of each chain
> `Mean (us)` Average time per run (microseconds)

View File

@@ -8,6 +8,7 @@ class PrettyReport extends ReportGenerator {
@override
final List<String> keys = [
'benchmark',
'phase',
'chainCount',
'nestingDepth',
'mean_us',
@@ -24,7 +25,9 @@ class PrettyReport extends ReportGenerator {
/// Mappings from internal benchmark IDs to display names.
static const nameMap = {
'Universal_UniversalBenchmark.registerSingleton': 'RegisterSingleton',
'Universal_UniversalBenchmark.registerLazySingleton': 'RegisterLazySingleton',
'Universal_UniversalBenchmark.chainSingleton': 'ChainSingleton',
'Universal_UniversalBenchmark.chainLazySingleton': 'ChainLazySingleton',
'Universal_UniversalBenchmark.chainFactory': 'ChainFactory',
'Universal_UniversalBenchmark.chainAsync': 'AsyncChain',
'Universal_UniversalBenchmark.named': 'Named',
@@ -36,6 +39,7 @@ class PrettyReport extends ReportGenerator {
String render(List<Map<String, dynamic>> rows) {
final headers = [
'Benchmark',
'Phase',
'Chain Count',
'Depth',
'Mean (us)',
@@ -53,6 +57,7 @@ class PrettyReport extends ReportGenerator {
final readableName = nameMap[r['benchmark']] ?? r['benchmark'];
return [
readableName,
r['phase'],
r['chainCount'],
r['nestingDepth'],
r['mean_us'],