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

Side by Side Diff: tools/perf/metrics/timeline.py

Issue 140653003: Sanitize event names before adding to results object (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 | tools/perf/metrics/timeline_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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)
OLDNEW
« no previous file with comments | « no previous file | tools/perf/metrics/timeline_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698