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

Side by Side Diff: tools/perf/measurements/rasterize_and_record.py

Issue 23902027: telemetry: Make trace profiler work with trace-based benchmarks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 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 | « no previous file | tools/perf/measurements/smoothness.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 (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 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 import time 5 import time
6 6
7 from metrics import smoothness 7 from metrics import smoothness
8 from telemetry.page import page_measurement 8 from telemetry.page import page_measurement
9 9
10 class StatsCollector(object): 10 class StatsCollector(object):
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 # first frame requested has more variance in the number of pixels 141 # first frame requested has more variance in the number of pixels
142 # rasterized. 142 # rasterized.
143 tab.ExecuteJavaScript(""" 143 tab.ExecuteJavaScript("""
144 window.__rafFired = false; 144 window.__rafFired = false;
145 window.webkitRequestAnimationFrame(function() { 145 window.webkitRequestAnimationFrame(function() {
146 chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers(); 146 chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers();
147 window.__rafFired = true; 147 window.__rafFired = true;
148 }); 148 });
149 """) 149 """)
150 150
151 tab.browser.StartTracing('webkit,webkit.console,benchmark', 60) 151 # We don't need to start tracing, if a trace profiler is already running.
152 # Note that all trace event categories are enabled in this case, which
153 # increases the risk of a trace buffer overflow.
154 if self.options.profiler != 'trace':
tonyg 2013/09/11 21:31:44 Making this Measurement aware of profilers which a
155 tab.browser.StartTracing('webkit.console,benchmark', 60)
152 self._metrics.Start() 156 self._metrics.Start()
153 157
154 tab.ExecuteJavaScript(""" 158 tab.ExecuteJavaScript("""
155 console.time("measureNextFrame"); 159 console.time("measureNextFrame");
156 window.__rafFired = false; 160 window.__rafFired = false;
157 window.webkitRequestAnimationFrame(function() { 161 window.webkitRequestAnimationFrame(function() {
158 chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers(); 162 chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers();
159 window.__rafFired = true; 163 window.__rafFired = true;
160 }); 164 });
161 """) 165 """)
162 # Wait until the frame was drawn. 166 # Wait until the frame was drawn.
163 # Needs to be adjusted for every device and for different 167 # Needs to be adjusted for every device and for different
164 # raster_record_repeat counts. 168 # raster_record_repeat counts.
165 # TODO(ernstm): replace by call-back. 169 # TODO(ernstm): replace by call-back.
166 time.sleep(float(self.options.stop_wait_time)) 170 time.sleep(float(self.options.stop_wait_time))
167 tab.ExecuteJavaScript('console.timeEnd("measureNextFrame")') 171 tab.ExecuteJavaScript('console.timeEnd("measureNextFrame")')
168 172
173 # Always stop tracing at this point. If a trace profiler is running, it will
174 # be stopped here.
169 tab.browser.StopTracing() 175 tab.browser.StopTracing()
170 self._metrics.Stop() 176 self._metrics.Stop()
171 177
172 timeline = tab.browser.GetTraceResultAndReset().AsTimelineModel() 178 # Fetch the results without resetting, if a trace profiler is running. The
179 # profiler needs to read the results later on.
180 if self.options.profiler == 'trace':
181 timeline = tab.browser.GetTraceResult().AsTimelineModel()
182 else:
183 timeline = tab.browser.GetTraceResultAndReset().AsTimelineModel()
173 collector = StatsCollector(timeline) 184 collector = StatsCollector(timeline)
174 collector.GatherRenderingStats() 185 collector.GatherRenderingStats()
175 186
176 rendering_stats = self._metrics.end_values 187 rendering_stats = self._metrics.end_values
177 188
178 results.Add('best_rasterize_time', 'seconds', 189 results.Add('best_rasterize_time', 'seconds',
179 collector.total_best_rasterize_time / 1.e3, 190 collector.total_best_rasterize_time / 1.e3,
180 data_type='unimportant') 191 data_type='unimportant')
181 results.Add('best_record_time', 'seconds', 192 results.Add('best_record_time', 'seconds',
182 collector.total_best_record_time / 1.e3, 193 collector.total_best_record_time / 1.e3,
183 data_type='unimportant') 194 data_type='unimportant')
184 results.Add('total_pixels_rasterized', 'pixels', 195 results.Add('total_pixels_rasterized', 'pixels',
185 collector.total_pixels_rasterized, 196 collector.total_pixels_rasterized,
186 data_type='unimportant') 197 data_type='unimportant')
187 results.Add('total_pixels_recorded', 'pixels', 198 results.Add('total_pixels_recorded', 'pixels',
188 collector.total_pixels_recorded, 199 collector.total_pixels_recorded,
189 data_type='unimportant') 200 data_type='unimportant')
190 201
191 if self.options.report_all_results: 202 if self.options.report_all_results:
192 for k, v in rendering_stats.iteritems(): 203 for k, v in rendering_stats.iteritems():
193 results.Add(k, '', v) 204 results.Add(k, '', v)
OLDNEW
« no previous file with comments | « no previous file | tools/perf/measurements/smoothness.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698