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

Side by Side Diff: components/scheduler/renderer/idle_time_estimator.cc

Issue 1409073002: Make IdleTimeEstimator ignore nested tasks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix typo Created 5 years, 2 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 "components/scheduler/renderer/idle_time_estimator.h" 5 #include "components/scheduler/renderer/idle_time_estimator.h"
6 6
7 #include "base/time/default_tick_clock.h" 7 #include "base/time/default_tick_clock.h"
8 8
9 namespace scheduler { 9 namespace scheduler {
10 10
(...skipping 18 matching lines...) Expand all
29 base::TimeDelta compositor_frame_interval) const { 29 base::TimeDelta compositor_frame_interval) const {
30 base::TimeDelta expected_compositor_task_runtime_ = 30 base::TimeDelta expected_compositor_task_runtime_ =
31 per_frame_compositor_task_runtime_.Percentile(estimation_percentile_); 31 per_frame_compositor_task_runtime_.Percentile(estimation_percentile_);
32 return std::max(base::TimeDelta(), compositor_frame_interval - 32 return std::max(base::TimeDelta(), compositor_frame_interval -
33 expected_compositor_task_runtime_); 33 expected_compositor_task_runtime_);
34 } 34 }
35 35
36 void IdleTimeEstimator::DidCommitFrameToCompositor() { 36 void IdleTimeEstimator::DidCommitFrameToCompositor() {
37 // This will run inside of a WillProcessTask / DidProcessTask pair, let 37 // This will run inside of a WillProcessTask / DidProcessTask pair, let
38 // DidProcessTask know a frame was comitted. 38 // DidProcessTask know a frame was comitted.
39 did_commit_ = true; 39 if (nesting_level_ == 1)
40 did_commit_ = true;
40 } 41 }
41 42
42 void IdleTimeEstimator::Clear() { 43 void IdleTimeEstimator::Clear() {
43 task_start_time_ = base::TimeTicks(); 44 task_start_time_ = base::TimeTicks();
44 prev_commit_time_ = base::TimeTicks(); 45 prev_commit_time_ = base::TimeTicks();
45 cumulative_compositor_runtime_ = base::TimeDelta(); 46 cumulative_compositor_runtime_ = base::TimeDelta();
46 per_frame_compositor_task_runtime_.Clear(); 47 per_frame_compositor_task_runtime_.Clear();
47 did_commit_ = false; 48 did_commit_ = false;
48 } 49 }
49 50
50 void IdleTimeEstimator::SetTimeSourceForTesting( 51 void IdleTimeEstimator::SetTimeSourceForTesting(
51 scoped_ptr<base::TickClock> time_source) { 52 scoped_ptr<base::TickClock> time_source) {
52 time_source_ = time_source.Pass(); 53 time_source_ = time_source.Pass();
53 } 54 }
54 55
55 void IdleTimeEstimator::WillProcessTask(const base::PendingTask& pending_task) { 56 void IdleTimeEstimator::WillProcessTask(const base::PendingTask& pending_task) {
56 nesting_level_++; 57 nesting_level_++;
57 task_start_time_ = time_source_->NowTicks(); 58 if (nesting_level_ == 1)
59 task_start_time_ = time_source_->NowTicks();
58 } 60 }
59 61
60 void IdleTimeEstimator::DidProcessTask(const base::PendingTask& pending_task) { 62 void IdleTimeEstimator::DidProcessTask(const base::PendingTask& pending_task) {
61 DCHECK_EQ(nesting_level_, 1); 63 nesting_level_--;
Sami 2015/10/16 10:52:11 nit: DCHECK_GT(nesting_level_, 0);
alex clarke (OOO till 29th) 2015/10/16 10:54:46 Done.
64 if (nesting_level_ != 0)
65 return;
66
62 cumulative_compositor_runtime_ += time_source_->NowTicks() - task_start_time_; 67 cumulative_compositor_runtime_ += time_source_->NowTicks() - task_start_time_;
63 68
64 if (did_commit_) { 69 if (did_commit_) {
65 per_frame_compositor_task_runtime_.InsertSample( 70 per_frame_compositor_task_runtime_.InsertSample(
66 cumulative_compositor_runtime_); 71 cumulative_compositor_runtime_);
67 cumulative_compositor_runtime_ = base::TimeDelta(); 72 cumulative_compositor_runtime_ = base::TimeDelta();
68 did_commit_ = false; 73 did_commit_ = false;
69 } 74 }
70 nesting_level_--;
71 } 75 }
72 76
73 } // namespace scheduler 77 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/renderer/idle_time_estimator.h ('k') | components/scheduler/renderer/idle_time_estimator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698