Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(820)

Side by Side Diff: cc/debug/frame_timing_tracker.cc

Issue 914403003: cc: Add main frame timing info to frame timing tracker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/debug/frame_timing_tracker.h" 5 #include "cc/debug/frame_timing_tracker.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "cc/trees/proxy.h" 11 #include "cc/trees/proxy.h"
12 12
13 namespace cc { 13 namespace cc {
14 14
15 FrameTimingTracker::CompositeTimingEvent::CompositeTimingEvent( 15 FrameTimingTracker::CompositeTimingEvent::CompositeTimingEvent(
16 int _frame_id, 16 int _frame_id,
17 base::TimeTicks _timestamp) 17 base::TimeTicks _timestamp)
18 : frame_id(_frame_id), timestamp(_timestamp) { 18 : frame_id(_frame_id), timestamp(_timestamp) {
19 } 19 }
20 20
21 FrameTimingTracker::CompositeTimingEvent::~CompositeTimingEvent() { 21 FrameTimingTracker::CompositeTimingEvent::~CompositeTimingEvent() {
22 } 22 }
23 23
24 FrameTimingTracker::MainFrameTimingEvent::MainFrameTimingEvent(
25 int frame_id,
26 base::TimeTicks timestamp,
27 base::TimeDelta duration)
28 : frame_id(frame_id), timestamp(timestamp), duration(duration) {
29 }
30
31 FrameTimingTracker::MainFrameTimingEvent::~MainFrameTimingEvent() {
32 }
33
24 // static 34 // static
25 scoped_ptr<FrameTimingTracker> FrameTimingTracker::Create() { 35 scoped_ptr<FrameTimingTracker> FrameTimingTracker::Create() {
26 return make_scoped_ptr(new FrameTimingTracker); 36 return make_scoped_ptr(new FrameTimingTracker);
27 } 37 }
28 38
29 FrameTimingTracker::FrameTimingTracker() { 39 FrameTimingTracker::FrameTimingTracker() {
30 } 40 }
31 41
32 FrameTimingTracker::~FrameTimingTracker() { 42 FrameTimingTracker::~FrameTimingTracker() {
33 } 43 }
34 44
35 void FrameTimingTracker::SaveTimeStamps( 45 void FrameTimingTracker::SaveTimeStamps(
36 base::TimeTicks timestamp, 46 base::TimeTicks timestamp,
37 const std::vector<FrameAndRectIds>& frame_ids) { 47 const std::vector<FrameAndRectIds>& frame_ids) {
38 if (!composite_events_) 48 if (!composite_events_)
39 composite_events_.reset(new CompositeTimingSet); 49 composite_events_.reset(new CompositeTimingSet);
40 for (const auto& pair : frame_ids) 50 for (const auto& pair : frame_ids) {
41 (*composite_events_)[pair.second].push_back( 51 (*composite_events_)[pair.second].push_back(
42 CompositeTimingEvent(pair.first, timestamp)); 52 CompositeTimingEvent(pair.first, timestamp));
53 }
54 }
55
56 void FrameTimingTracker::SaveMainFrameTimeStamps(
57 const std::vector<int64_t>& request_ids,
58 base::TimeTicks main_frame_time,
59 base::TimeDelta frame_duration,
60 int source_frame_number) {
61 if (!main_frame_events_)
62 main_frame_events_.reset(new MainFrameTimingSet);
63 for (const auto& request : request_ids) {
64 std::vector<MainFrameTimingEvent>& events = (*main_frame_events_)[request];
65 events.push_back(MainFrameTimingEvent(source_frame_number, main_frame_time,
66 frame_duration));
67 }
43 } 68 }
44 69
45 scoped_ptr<FrameTimingTracker::CompositeTimingSet> 70 scoped_ptr<FrameTimingTracker::CompositeTimingSet>
46 FrameTimingTracker::GroupCountsByRectId() { 71 FrameTimingTracker::GroupCompositeCountsByRectId() {
47 if (!composite_events_) 72 if (!composite_events_)
48 return make_scoped_ptr(new CompositeTimingSet); 73 return make_scoped_ptr(new CompositeTimingSet);
49 scoped_ptr<CompositeTimingSet> composite_info(new CompositeTimingSet); 74 for (auto& infos : *composite_events_) {
50 for (auto& infos : *composite_events_)
51 std::sort( 75 std::sort(
52 infos.second.begin(), infos.second.end(), 76 infos.second.begin(), infos.second.end(),
53 [](const CompositeTimingEvent& lhs, const CompositeTimingEvent& rhs) { 77 [](const CompositeTimingEvent& lhs, const CompositeTimingEvent& rhs) {
54 return lhs.timestamp < rhs.timestamp; 78 return lhs.timestamp < rhs.timestamp;
55 }); 79 });
80 }
56 return composite_events_.Pass(); 81 return composite_events_.Pass();
57 } 82 }
58 83
84 scoped_ptr<FrameTimingTracker::MainFrameTimingSet>
85 FrameTimingTracker::GroupMainFrameCountsByRectId() {
86 if (!main_frame_events_)
87 return make_scoped_ptr(new MainFrameTimingSet);
88 for (auto& infos : *main_frame_events_) {
89 std::sort(
90 infos.second.begin(), infos.second.end(),
91 [](const MainFrameTimingEvent& lhs, const MainFrameTimingEvent& rhs) {
92 return lhs.timestamp < rhs.timestamp;
93 });
94 }
95 return main_frame_events_.Pass();
96 }
97
59 } // namespace cc 98 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698