| 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 |