mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-24 05:25:19 +00:00
refactor(cli): modularize CLI — extract parser, runner, report and main logic into dedicated files
This commit is contained in:
21
benchmark_cherrypick/lib/cli/report/csv_report.dart
Normal file
21
benchmark_cherrypick/lib/cli/report/csv_report.dart
Normal file
@@ -0,0 +1,21 @@
|
||||
import 'report_generator.dart';
|
||||
|
||||
class CsvReport extends ReportGenerator {
|
||||
@override
|
||||
final List<String> keys = [
|
||||
'benchmark','chainCount','nestingDepth','mean_us','median_us','stddev_us',
|
||||
'min_us','max_us','trials','timings_us','memory_diff_kb','delta_peak_kb','peak_rss_kb'
|
||||
];
|
||||
@override
|
||||
String render(List<Map<String, dynamic>> rows) {
|
||||
final header = keys.join(',');
|
||||
final lines = rows.map((r) =>
|
||||
keys.map((k) {
|
||||
final v = r[k];
|
||||
if (v is List) return '"${v.join(';')}"';
|
||||
return (v ?? '').toString();
|
||||
}).join(',')
|
||||
).toList();
|
||||
return ([header] + lines).join('\n');
|
||||
}
|
||||
}
|
||||
10
benchmark_cherrypick/lib/cli/report/json_report.dart
Normal file
10
benchmark_cherrypick/lib/cli/report/json_report.dart
Normal file
@@ -0,0 +1,10 @@
|
||||
import 'report_generator.dart';
|
||||
|
||||
class JsonReport extends ReportGenerator {
|
||||
@override
|
||||
List<String> get keys => [];
|
||||
@override
|
||||
String render(List<Map<String, dynamic>> rows) {
|
||||
return '[\n${rows.map((r) => ' $r').join(',\n')}\n]';
|
||||
}
|
||||
}
|
||||
15
benchmark_cherrypick/lib/cli/report/pretty_report.dart
Normal file
15
benchmark_cherrypick/lib/cli/report/pretty_report.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import 'report_generator.dart';
|
||||
|
||||
class PrettyReport extends ReportGenerator {
|
||||
@override
|
||||
final List<String> keys = [
|
||||
'benchmark','chainCount','nestingDepth','mean_us','median_us','stddev_us',
|
||||
'min_us','max_us','trials','memory_diff_kb','delta_peak_kb','peak_rss_kb'
|
||||
];
|
||||
@override
|
||||
String render(List<Map<String, dynamic>> rows) {
|
||||
final header = keys.join('\t');
|
||||
final lines = rows.map((r) => keys.map((k) => (r[k] ?? '').toString()).join('\t')).toList();
|
||||
return ([header] + lines).join('\n');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
abstract class ReportGenerator {
|
||||
String render(List<Map<String, dynamic>> results);
|
||||
List<String> get keys;
|
||||
}
|
||||
Reference in New Issue
Block a user