@@ -7,15 +7,7 @@ import 'dart:io';
7
7
8
8
import 'package:git/git.dart' ;
9
9
import 'package:metrics_center/flutter.dart' ;
10
-
11
- const String kNameKey = 'name' ;
12
- const String kTimeUnitKey = 'time_unit' ;
13
- const List <String > kNonNumericalValueSubResults = < String > [
14
- kNameKey,
15
- kTimeUnitKey,
16
- 'iterations' ,
17
- 'big_o' ,
18
- ];
10
+ import 'package:metrics_center/google_benchmark.dart' ;
19
11
20
12
Future <String > _getGitRevision () async {
21
13
final GitDir gitDir = await GitDir .fromExisting ('../../' );
@@ -29,56 +21,19 @@ Future<String> _getGitRevision() async {
29
21
return logResult.stdout.toString ();
30
22
}
31
23
32
- void _parseAnItem (
33
- Map <String , dynamic > item,
34
- List <FlutterEngineMetricPoint > points,
35
- Map <String , String > context,
36
- String gitRevision,
37
- ) {
38
- final String name = item[kNameKey];
39
- final Map <String , String > timeUnitMap = < String , String > {
40
- kUnitKey: item[kTimeUnitKey]
41
- };
42
- for (String subResult in item.keys) {
43
- if (! kNonNumericalValueSubResults.contains (subResult)) {
44
- num rawValue;
45
- try {
46
- rawValue = item[subResult];
47
- } catch (e) {
48
- print ('$subResult : ${item [subResult ]} (${item [subResult ].runtimeType }) '
49
- 'is not a number' );
50
- rethrow ;
51
- }
52
-
53
- final double value = rawValue is int ? rawValue.toDouble () : rawValue;
54
- points.add (
55
- FlutterEngineMetricPoint (name, value, gitRevision,
56
- moreTags: < String , String > {kSubResultKey: subResult}
57
- ..addAll (context)
58
- ..addAll (subResult.endsWith ('time' )
59
- ? timeUnitMap
60
- : < String , String > {})),
61
- );
62
- }
63
- }
64
- }
65
-
66
24
Future <List <FlutterEngineMetricPoint >> _parse (String jsonFileName) async {
67
25
final String gitRevision = await _getGitRevision ();
68
-
69
- final Map <String , dynamic > jsonResult =
70
- jsonDecode (File (jsonFileName).readAsStringSync ());
71
-
72
- final Map <String , dynamic > rawContext = jsonResult['context' ];
73
- final Map <String , String > context = rawContext.map <String , String >(
74
- (String k, dynamic v) => MapEntry <String , String >(k, v.toString ()),
75
- );
26
+ final List <MetricPoint > rawPoints =
27
+ await GoogleBenchmarkParser .parse (jsonFileName);
76
28
final List <FlutterEngineMetricPoint > points = < FlutterEngineMetricPoint > [];
77
-
78
- for (Map <String , dynamic > item in jsonResult['benchmarks' ]) {
79
- _parseAnItem (item, points, context, gitRevision);
29
+ for (MetricPoint rawPoint in rawPoints) {
30
+ points.add (FlutterEngineMetricPoint (
31
+ rawPoint.tags[kNameKey],
32
+ rawPoint.value,
33
+ gitRevision,
34
+ moreTags: rawPoint.tags,
35
+ ));
80
36
}
81
-
82
37
return points;
83
38
}
84
39
0 commit comments