Profiler: Don't iterate all events when filtering timeline view

There is no need to iterate through all events in a profile when
loading the timeline view, as soon as we see one event we can
move on to the next process.
This commit is contained in:
Brian Gianforcaro 2021-05-07 02:11:45 -07:00 committed by Andreas Kling
parent 7463cbdbdb
commit e3ee539fea
Notes: sideshowbarker 2024-07-18 18:36:37 +09:00

View file

@ -98,12 +98,14 @@ int main(int argc, char** argv)
auto timeline_view = TimelineView::construct();
for (auto& process : profile->processes()) {
size_t event_count = 0;
bool matching_event_found = false;
for (auto& event : profile->events()) {
if (event.pid == process.pid && process.valid_at(event.timestamp))
++event_count;
if (event.pid == process.pid && process.valid_at(event.timestamp)) {
matching_event_found = true;
break;
}
}
if (!event_count)
if (!matching_event_found)
continue;
auto& timeline_header = timeline_header_container->add<TimelineHeader>(*profile, process);
timeline_header.set_shrink_to_fit(true);