diff --git a/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart b/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart index e44f58f9d1..a9cef15708 100644 --- a/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart +++ b/dev/benchmarks/complex_layout/test_driver/semantics_perf_test.dart @@ -34,9 +34,9 @@ void main() { }); final Iterable semanticsEvents = timeline.events.where((TimelineEvent event) => event.name == 'Semantics'); - if (semanticsEvents.length != 1) - fail('Expected exactly one semantics event, got ${semanticsEvents.length}'); - final Duration semanticsTreeCreation = semanticsEvents.first.duration; + if (semanticsEvents.length != 2) + fail('Expected exactly two semantics events, got ${semanticsEvents.length}'); + final Duration semanticsTreeCreation = Duration(microseconds: semanticsEvents.last.timestampMicros - semanticsEvents.first.timestampMicros); final String jsonEncoded = json.encode({'initialSemanticsTreeCreation': semanticsTreeCreation.inMilliseconds}); File(p.join(testOutputsDirectory, 'complex_layout_semantics_perf.json')).writeAsStringSync(jsonEncoded); diff --git a/examples/flutter_gallery/test_driver/transitions_perf_test.dart b/examples/flutter_gallery/test_driver/transitions_perf_test.dart index 6ee891bd6a..2fd1a188be 100644 --- a/examples/flutter_gallery/test_driver/transitions_perf_test.dart +++ b/examples/flutter_gallery/test_driver/transitions_perf_test.dart @@ -66,6 +66,7 @@ List _allDemos = []; Future saveDurationsHistogram(List> events, String outputPath) async { final Map> durations = >{}; Map startEvent; + int frameStart; // Save the duration of the first frame after each 'Start Transition' event. for (Map event in events) { @@ -74,10 +75,19 @@ Future saveDurationsHistogram(List> events, String ou assert(startEvent == null); startEvent = event; } else if (startEvent != null && eventName == 'Frame') { - final String routeName = startEvent['args']['to'] as String; - durations[routeName] ??= []; - durations[routeName].add(event['dur'] as int); - startEvent = null; + final String phase = event['ph'] as String; + final int timestamp = event['ts'] as int; + if (phase == 'B') { + assert(frameStart == null); + frameStart = timestamp; + } else { + assert(phase == 'E'); + final String routeName = startEvent['args']['to'] as String; + durations[routeName] ??= []; + durations[routeName].add(timestamp - frameStart); + startEvent = null; + frameStart = null; + } } }