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

Side by Side Diff: ui/events/latency_info.cc

Issue 424833009: Draw the start of input latency using its original/ui timestamp (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/debug/trace_event.h" 5 #include "base/debug/trace_event.h"
6 #include "base/json/json_writer.h" 6 #include "base/json/json_writer.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "ui/events/latency_info.h" 9 #include "ui/events/latency_info.h"
10 10
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 175
176 void LatencyInfo::AddLatencyNumberWithTimestamp(LatencyComponentType component, 176 void LatencyInfo::AddLatencyNumberWithTimestamp(LatencyComponentType component,
177 int64 id, 177 int64 id,
178 int64 component_sequence_number, 178 int64 component_sequence_number,
179 base::TimeTicks time, 179 base::TimeTicks time,
180 uint32 event_count) { 180 uint32 event_count) {
181 if (IsBeginComponent(component)) { 181 if (IsBeginComponent(component)) {
182 // Should only ever add begin component once. 182 // Should only ever add begin component once.
183 CHECK_EQ(-1, trace_id); 183 CHECK_EQ(-1, trace_id);
184 trace_id = component_sequence_number; 184 trace_id = component_sequence_number;
185 TRACE_EVENT_ASYNC_BEGIN0("benchmark", 185
186 "InputLatency", 186 // The timestamp for ASYNC_BEGIN trace event is used for drawing the
187 TRACE_ID_DONT_MANGLE(trace_id)); 187 // beginning of the trace event in trace viewer. For better visualization,
188 // for an input event, we want to draw the beginning as when the event is
189 // originally created, e.g. the timestamp of its ORIGINAL/UI_COMPONENT,
190 // not when we actually issue the ASYNC_BEGIN trace event.
191 LatencyComponent component;
192 if (FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
193 0,
194 &component) ||
195 FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT,
196 0,
197 &component)) {
198 // The timestamp stored in ORIGINAL/UI_COMPONENT is using CLOCK_MONOTONIC,
199 // while TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0 expects timestamp
200 // using CLOCK_MONOTONIC or CLOCK_SYSTEM_TRACE (on CrOS). So we need to
201 // adjust the diff between in CLOCK_MONOTONIC and CLOCK_SYSTEM_TRACE.
202 // Note that the diff is drifting overtime so we can't use a static value.
203 int64 diff = base::TimeTicks::HighResNow().ToInternalValue() -
dsinclair 2014/07/29 15:35:07 Do we know how expensive these two timer calls are
Yufeng Shen (Slow to review) 2014/07/29 20:01:33 Done.
204 base::TimeTicks::NowFromSystemTraceTime().ToInternalValue();
205 TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(
206 "benchmark",
Yufeng Shen (Slow to review) 2014/07/28 23:56:31 Hey Dan, I want to confirm with you that trace eve
dsinclair 2014/07/29 15:35:06 Why not create a TRACE_EVENT_ASYNC_BEGIN_WITH_TIME
Yufeng Shen (Slow to review) 2014/07/29 20:01:33 Done.
207 "InputLatency",
208 TRACE_ID_DONT_MANGLE(trace_id),
209 static_cast<int>(base::PlatformThread::CurrentId()),
210 component.event_time.ToInternalValue() - diff);
211 } else {
212 TRACE_EVENT_ASYNC_BEGIN0("benchmark",
dsinclair 2014/07/29 15:35:06 Why not have this part of what's above and then, i
Yufeng Shen (Slow to review) 2014/07/29 20:01:33 Done.
213 "InputLatency",
214 TRACE_ID_DONT_MANGLE(trace_id));
215 }
216
188 TRACE_EVENT_FLOW_BEGIN0( 217 TRACE_EVENT_FLOW_BEGIN0(
189 "input", "LatencyInfo.Flow", TRACE_ID_DONT_MANGLE(trace_id)); 218 "input", "LatencyInfo.Flow", TRACE_ID_DONT_MANGLE(trace_id));
190 } 219 }
191 220
192 LatencyMap::key_type key = std::make_pair(component, id); 221 LatencyMap::key_type key = std::make_pair(component, id);
193 LatencyMap::iterator it = latency_components.find(key); 222 LatencyMap::iterator it = latency_components.find(key);
194 if (it == latency_components.end()) { 223 if (it == latency_components.end()) {
195 LatencyComponent info = {component_sequence_number, time, event_count}; 224 LatencyComponent info = {component_sequence_number, time, event_count};
196 latency_components[key] = info; 225 latency_components[key] = info;
197 } else { 226 } else {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 } 280 }
252 281
253 void LatencyInfo::TraceEventType(const char* event_type) { 282 void LatencyInfo::TraceEventType(const char* event_type) {
254 TRACE_EVENT_ASYNC_STEP_INTO0("benchmark", 283 TRACE_EVENT_ASYNC_STEP_INTO0("benchmark",
255 "InputLatency", 284 "InputLatency",
256 TRACE_ID_DONT_MANGLE(trace_id), 285 TRACE_ID_DONT_MANGLE(trace_id),
257 event_type); 286 event_type);
258 } 287 }
259 288
260 } // namespace ui 289 } // namespace ui
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698