OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 import collections | 4 import collections |
5 | 5 |
6 from metrics import Metric | 6 from metrics import Metric |
7 | 7 |
8 TRACING_MODE = 'tracing-mode' | 8 TRACING_MODE = 'tracing-mode' |
9 TIMELINE_MODE = 'timeline-mode' | 9 TIMELINE_MODE = 'timeline-mode' |
10 | 10 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 return self._model | 47 return self._model |
48 | 48 |
49 @model.setter | 49 @model.setter |
50 def model(self, model): | 50 def model(self, model): |
51 self._model = model | 51 self._model = model |
52 | 52 |
53 @property | 53 @property |
54 def renderer_process(self): | 54 def renderer_process(self): |
55 return self._renderer_process | 55 return self._renderer_process |
56 | 56 |
| 57 @renderer_process.setter |
| 58 def renderer_process(self, p): |
| 59 self._renderer_process = p |
| 60 |
57 def AddResults(self, tab, results): | 61 def AddResults(self, tab, results): |
58 return | 62 return |
59 | 63 |
60 class LoadTimesTimelineMetric(TimelineMetric): | 64 class LoadTimesTimelineMetric(TimelineMetric): |
61 def __init__(self, mode): | 65 def __init__(self, mode): |
62 super(LoadTimesTimelineMetric, self).__init__(mode) | 66 super(LoadTimesTimelineMetric, self).__init__(mode) |
63 self.report_main_thread_only = True | 67 self.report_main_thread_only = True |
64 | 68 |
65 def AddResults(self, _, results): | 69 def AddResults(self, _, results): |
66 assert self._model | 70 assert self._model |
(...skipping 15 matching lines...) Expand all Loading... |
82 thread_name = thread.name.replace('/','_') | 86 thread_name = thread.name.replace('/','_') |
83 events = thread.all_slices | 87 events = thread.all_slices |
84 | 88 |
85 for e in events: | 89 for e in events: |
86 events_by_name[e.name].append(e) | 90 events_by_name[e.name].append(e) |
87 | 91 |
88 for event_name, event_group in events_by_name.iteritems(): | 92 for event_name, event_group in events_by_name.iteritems(): |
89 times = [event.self_time for event in event_group] | 93 times = [event.self_time for event in event_group] |
90 total = sum(times) | 94 total = sum(times) |
91 biggest_jank = max(times) | 95 biggest_jank = max(times) |
92 full_name = thread_name + '|' + event_name | 96 |
| 97 # Results objects cannot contain the '.' character, so remove that here. |
| 98 sanitized_event_name = event_name.replace('.', '_') |
| 99 |
| 100 full_name = thread_name + '|' + sanitized_event_name |
93 results.Add(full_name, 'ms', total) | 101 results.Add(full_name, 'ms', total) |
94 results.Add(full_name + '_max', 'ms', biggest_jank) | 102 results.Add(full_name + '_max', 'ms', biggest_jank) |
95 results.Add(full_name + '_avg', 'ms', total / len(times)) | 103 results.Add(full_name + '_avg', 'ms', total / len(times)) |
96 | 104 |
97 for counter_name, counter in self.renderer_process.counters.iteritems(): | 105 for counter_name, counter in self.renderer_process.counters.iteritems(): |
98 total = sum(counter.totals) | 106 total = sum(counter.totals) |
99 results.Add(counter_name, 'count', total) | 107 results.Add(counter_name, 'count', total) |
100 results.Add(counter_name + '_avg', 'count', total / len(counter.totals)) | 108 results.Add(counter_name + '_avg', 'count', total / len(counter.totals)) |
101 | 109 |
102 | 110 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 self._model.bounds.bounds) * 100 | 231 self._model.bounds.bounds) * 100 |
224 results.Add(cpu_time_report_name, '%', time_as_percentage) | 232 results.Add(cpu_time_report_name, '%', time_as_percentage) |
225 | 233 |
226 # TOOD(nduca): When generic results objects are done, this special case | 234 # TOOD(nduca): When generic results objects are done, this special case |
227 # can be replaced with a generic UI feature. | 235 # can be replaced with a generic UI feature. |
228 for thread_category, results_for_thread_category in ( | 236 for thread_category, results_for_thread_category in ( |
229 results_per_thread_category.iteritems()): | 237 results_per_thread_category.iteritems()): |
230 if (thread_category == 'renderer_main' and | 238 if (thread_category == 'renderer_main' and |
231 self.report_renderer_main_details): | 239 self.report_renderer_main_details): |
232 results_for_thread_category.AddDetailedResults(thread_category, results) | 240 results_for_thread_category.AddDetailedResults(thread_category, results) |
OLD | NEW |