Unverified Commit afd745e8 authored by Kaushik Iska's avatar Kaushik Iska Committed by GitHub

Filter profiling events by names not category (#61185)

Category isn't preserved by timeline events as `Dart_TimelineEvent`
specifies the category as `embedder`.

Fixes: https://github.com/flutter/flutter/issues/60008
parent 1c1ef133
...@@ -5,8 +5,15 @@ ...@@ -5,8 +5,15 @@
import 'percentile_utils.dart'; import 'percentile_utils.dart';
import 'timeline.dart'; import 'timeline.dart';
/// The catrgory shared by all profiling related timeline events. /// Profiling related timeline events.
const String kProfilingCategory = 'flutter::profiling'; ///
/// We do not use a profiling category for these as all the dart timeline events
/// have the same profiling category "embedder".
const Set<String> kProfilingEvents = <String>{
_kCpuProfile,
_kGpuProfile,
_kMemoryProfile,
};
// These field names need to be in-sync with: // These field names need to be in-sync with:
// https://github.com/flutter/engine/blob/master/shell/profiling/sampling_profiler.cc // https://github.com/flutter/engine/blob/master/shell/profiling/sampling_profiler.cc
...@@ -26,12 +33,12 @@ enum ProfileType { ...@@ -26,12 +33,12 @@ enum ProfileType {
Memory, Memory,
} }
/// Summarizes [TimelineEvents]s corresponding to [kProfilingCategory] category. /// Summarizes [TimelineEvents]s corresponding to [kProfilingEvents] category.
/// ///
/// A sample event (some fields have been omitted for brewity): /// A sample event (some fields have been omitted for brewity):
/// ``` /// ```
/// { /// {
/// "category": "flutter::profiling", /// "category": "embedder",
/// "name": "CpuUsage", /// "name": "CpuUsage",
/// "ts": 121120, /// "ts": 121120,
/// "args": { /// "args": {
...@@ -51,7 +58,7 @@ class ProfilingSummarizer { ...@@ -51,7 +58,7 @@ class ProfilingSummarizer {
final Map<ProfileType, List<TimelineEvent>> eventsByType = final Map<ProfileType, List<TimelineEvent>> eventsByType =
<ProfileType, List<TimelineEvent>>{}; <ProfileType, List<TimelineEvent>>{};
for (final TimelineEvent event in profilingEvents) { for (final TimelineEvent event in profilingEvents) {
assert(event.category == kProfilingCategory); assert(kProfilingEvents.contains(event.name));
final ProfileType type = _getProfileType(event.name); final ProfileType type = _getProfileType(event.name);
eventsByType[type] ??= <TimelineEvent>[]; eventsByType[type] ??= <TimelineEvent>[];
eventsByType[type].add(event); eventsByType[type].add(event);
......
...@@ -229,9 +229,9 @@ class TimelineSummary { ...@@ -229,9 +229,9 @@ class TimelineSummary {
.toList(); .toList();
} }
List<TimelineEvent> _extractCategorizedEvents(String category) { List<TimelineEvent> _extractEventsWithNames(Set<String> names) {
return _timeline.events return _timeline.events
.where((TimelineEvent event) => event.category == category) .where((TimelineEvent event) => names.contains(event.name))
.toList(); .toList();
} }
...@@ -319,7 +319,7 @@ class TimelineSummary { ...@@ -319,7 +319,7 @@ class TimelineSummary {
List<Duration> _extractGpuRasterizerDrawDurations() => _extractBeginEndEvents(kRasterizeFrameEventName); List<Duration> _extractGpuRasterizerDrawDurations() => _extractBeginEndEvents(kRasterizeFrameEventName);
ProfilingSummarizer _profilingSummarizer() => ProfilingSummarizer.fromEvents(_extractCategorizedEvents(kProfilingCategory)); ProfilingSummarizer _profilingSummarizer() => ProfilingSummarizer.fromEvents(_extractEventsWithNames(kProfilingEvents));
List<Duration> _extractFrameDurations() => _extractBeginEndEvents(kBuildFrameEventName); List<Duration> _extractFrameDurations() => _extractBeginEndEvents(kBuildFrameEventName);
} }
...@@ -65,7 +65,7 @@ void main() { ...@@ -65,7 +65,7 @@ void main() {
}; };
Map<String, dynamic> cpuUsage(int timeStamp, double cpuUsage) => <String, dynamic>{ Map<String, dynamic> cpuUsage(int timeStamp, double cpuUsage) => <String, dynamic>{
'cat': 'flutter::profiling', 'cat': 'embedder',
'name': 'CpuUsage', 'name': 'CpuUsage',
'ts': timeStamp, 'ts': timeStamp,
'args': <String, String>{ 'args': <String, String>{
...@@ -74,7 +74,7 @@ void main() { ...@@ -74,7 +74,7 @@ void main() {
}; };
Map<String, dynamic> memoryUsage(int timeStamp, double dirty, double shared) => <String, dynamic>{ Map<String, dynamic> memoryUsage(int timeStamp, double dirty, double shared) => <String, dynamic>{
'cat': 'flutter::profiling', 'cat': 'embedder',
'name': 'MemoryUsage', 'name': 'MemoryUsage',
'ts': timeStamp, 'ts': timeStamp,
'args': <String, String>{ 'args': <String, String>{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment