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

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

Issue 24257011: Revert "Revert 224496 "Move ui/base/latency_info* to ui/events"" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix gyp bustage Created 7 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
« no previous file with comments | « ui/base/latency_info.h ('k') | ui/base/latency_info_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/base/latency_info.h"
6
7 #include <algorithm>
8
9 namespace ui {
10
11 LatencyInfo::LatencyInfo() {
12 }
13
14 LatencyInfo::~LatencyInfo() {
15 }
16
17 void LatencyInfo::MergeWith(const LatencyInfo& other) {
18 for (LatencyMap::const_iterator it = other.latency_components.begin();
19 it != other.latency_components.end();
20 ++it) {
21 AddLatencyNumberWithTimestamp(it->first.first,
22 it->first.second,
23 it->second.sequence_number,
24 it->second.event_time,
25 it->second.event_count);
26 }
27 }
28
29 void LatencyInfo::AddNewLatencyFrom(const LatencyInfo& other) {
30 for (LatencyMap::const_iterator it = other.latency_components.begin();
31 it != other.latency_components.end();
32 ++it) {
33 if (!FindLatency(it->first.first, it->first.second, NULL)) {
34 AddLatencyNumberWithTimestamp(it->first.first,
35 it->first.second,
36 it->second.sequence_number,
37 it->second.event_time,
38 it->second.event_count);
39 }
40 }
41 }
42
43 void LatencyInfo::AddLatencyNumber(LatencyComponentType component,
44 int64 id,
45 int64 component_sequence_number) {
46 AddLatencyNumberWithTimestamp(component, id, component_sequence_number,
47 base::TimeTicks::HighResNow(), 1);
48 }
49
50 void LatencyInfo::AddLatencyNumberWithTimestamp(LatencyComponentType component,
51 int64 id,
52 int64 component_sequence_number,
53 base::TimeTicks time,
54 uint32 event_count) {
55 LatencyMap::key_type key = std::make_pair(component, id);
56 LatencyMap::iterator it = latency_components.find(key);
57 if (it == latency_components.end()) {
58 LatencyComponent info = {component_sequence_number, time, event_count};
59 latency_components[key] = info;
60 return;
61 }
62 it->second.sequence_number = std::max(component_sequence_number,
63 it->second.sequence_number);
64 uint32 new_count = event_count + it->second.event_count;
65 if (event_count > 0 && new_count != 0) {
66 // Do a weighted average, so that the new event_time is the average of
67 // the times of events currently in this structure with the time passed
68 // into this method.
69 it->second.event_time += (time - it->second.event_time) * event_count /
70 new_count;
71 it->second.event_count = new_count;
72 }
73 }
74
75 bool LatencyInfo::FindLatency(LatencyComponentType type,
76 int64 id,
77 LatencyComponent* output) const {
78 LatencyMap::const_iterator it = latency_components.find(
79 std::make_pair(type, id));
80 if (it == latency_components.end())
81 return false;
82 if (output)
83 *output = it->second;
84 return true;
85 }
86
87 void LatencyInfo::Clear() {
88 latency_components.clear();
89 }
90
91 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/latency_info.h ('k') | ui/base/latency_info_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698