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

Side by Side Diff: tools/perf/perf_tools/smoothness_benchmark.py

Issue 11366197: Refactoring benchmarks for perf bot efficiency. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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
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 from telemetry import multi_page_benchmark 4 from telemetry import multi_page_benchmark
5 from telemetry import util
5 6
6 class DidNotScrollException(multi_page_benchmark.MeasurementFailure): 7 class DidNotScrollException(multi_page_benchmark.MeasurementFailure):
7 def __init__(self): 8 def __init__(self):
8 super(DidNotScrollException, self).__init__('Page did not scroll') 9 super(DidNotScrollException, self).__init__('Page did not scroll')
9 10
10 def GetOrZero(stat, rendering_stats_deltas): 11 def GetOrZero(stat, rendering_stats_deltas):
11 if stat in rendering_stats_deltas: 12 if stat in rendering_stats_deltas:
12 return rendering_stats_deltas[stat] 13 return rendering_stats_deltas[stat]
13 return 0 14 return 0
14 15
15 def DivideIfPossibleOrZero(numerator, denominator): 16 def DivideIfPossibleOrZero(numerator, denominator):
16 if denominator == 0: 17 if denominator == 0:
17 return 0 18 return 0
18 return numerator / denominator 19 return numerator / denominator
19 20
20 def CalcScrollResults(rendering_stats_deltas, results): 21 def CalcScrollResults(rendering_stats_deltas, results):
22 # Scrolling
21 num_frames_sent_to_screen = rendering_stats_deltas['numFramesSentToScreen'] 23 num_frames_sent_to_screen = rendering_stats_deltas['numFramesSentToScreen']
22 24
23 mean_frame_time_seconds = ( 25 mean_frame_time_seconds = (
24 rendering_stats_deltas['totalTimeInSeconds'] / 26 rendering_stats_deltas['totalTimeInSeconds'] /
25 float(num_frames_sent_to_screen)) 27 float(num_frames_sent_to_screen))
26 28
27 dropped_percent = ( 29 dropped_percent = (
28 rendering_stats_deltas['droppedFrameCount'] / 30 rendering_stats_deltas['droppedFrameCount'] /
29 float(num_frames_sent_to_screen)) 31 float(num_frames_sent_to_screen))
30 32
33 results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3))
34 results.Add('dropped_percent', '%', round(dropped_percent * 100, 1))
31 35
36
37 # Painting
32 totalPaintTime = GetOrZero('totalPaintTimeInSeconds', 38 totalPaintTime = GetOrZero('totalPaintTimeInSeconds',
33 rendering_stats_deltas) 39 rendering_stats_deltas)
34 40
35 totalRasterizeTime = GetOrZero('totalRasterizeTimeInSeconds', 41 totalRasterizeTime = GetOrZero('totalRasterizeTimeInSeconds',
36 rendering_stats_deltas) 42 rendering_stats_deltas)
37 43
38 totalPixelsPainted = GetOrZero('totalPixelsPainted', 44 totalPixelsPainted = GetOrZero('totalPixelsPainted',
39 rendering_stats_deltas) 45 rendering_stats_deltas)
40 46
41 totalPixelsRasterized = GetOrZero('totalPixelsRasterized', 47 totalPixelsRasterized = GetOrZero('totalPixelsRasterized',
42 rendering_stats_deltas) 48 rendering_stats_deltas)
43 49
44
45 megapixelsPaintedPerSecond = DivideIfPossibleOrZero( 50 megapixelsPaintedPerSecond = DivideIfPossibleOrZero(
46 (totalPixelsPainted / 1000000.0), totalPaintTime) 51 (totalPixelsPainted / 1000000.0), totalPaintTime)
47 52
48 megapixelsRasterizedPerSecond = DivideIfPossibleOrZero( 53 megapixelsRasterizedPerSecond = DivideIfPossibleOrZero(
49 (totalPixelsRasterized / 1000000.0), totalRasterizeTime) 54 (totalPixelsRasterized / 1000000.0), totalRasterizeTime)
50 55
51 results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3))
52 results.Add('dropped_percent', '%', round(dropped_percent * 100, 1))
53
54 results.Add('total_paint_time', 'seconds', totalPaintTime) 56 results.Add('total_paint_time', 'seconds', totalPaintTime)
55 results.Add('total_rasterize_time', 'seconds', totalRasterizeTime) 57 results.Add('total_rasterize_time', 'seconds', totalRasterizeTime)
56 results.Add('total_pixels_painted', '', totalPixelsPainted) 58 results.Add('total_pixels_painted', '', totalPixelsPainted)
57 results.Add('total_pixels_rasterized', '', totalPixelsRasterized) 59 results.Add('total_pixels_rasterized', '', totalPixelsRasterized)
58 results.Add('megapixels_painted_per_second', '', megapixelsPaintedPerSecond) 60 results.Add('megapixels_painted_per_second', '', megapixelsPaintedPerSecond)
59 results.Add('megapixels_rasterized_per_second', '', 61 results.Add('megapixels_rasterized_per_second', '',
60 megapixelsRasterizedPerSecond) 62 megapixelsRasterizedPerSecond)
61 results.Add('total_paint_and_rasterize_time', 'seconds', totalPaintTime + 63 results.Add('total_paint_and_rasterize_time', 'seconds', totalPaintTime +
62 totalRasterizeTime) 64 totalRasterizeTime)
63 65
64 class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark): 66 # Texture Upload
67 if (('totalCommitCount' not in rendering_stats_deltas)
68 or rendering_stats_deltas['totalCommitCount'] == 0) :
69 averageCommitTimeMs = 0
70 else :
71 averageCommitTimeMs = (
72 1000 * rendering_stats_deltas['totalCommitTimeInSeconds'] /
73 rendering_stats_deltas['totalCommitCount'])
74
75 results.Add('texture_upload_count', 'count',
76 GetOrZero('textureUploadCount', rendering_stats_deltas))
77 results.Add('average_commit_time', 'ms', averageCommitTimeMs)
78
79 class SmoothnessBenchmark(multi_page_benchmark.MultiPageBenchmark):
65 def __init__(self): 80 def __init__(self):
66 super(ScrollingBenchmark, self).__init__('scrolling') 81 super(SmoothnessBenchmark, self).__init__('scrolling')
67 82
68 def AddCommandLineOptions(self, parser): 83 def AddCommandLineOptions(self, parser):
69 parser.add_option('--no-gpu-benchmarking-extension', action='store_true', 84 parser.add_option('--no-gpu-benchmarking-extension', action='store_true',
70 dest='no_gpu_benchmarking_extension', 85 dest='no_gpu_benchmarking_extension',
71 help='Disable the chrome.gpuBenchmarking extension.') 86 help='Disable the chrome.gpuBenchmarking extension.')
72 parser.add_option('--report-all-results', dest='report_all_results', 87 parser.add_option('--report-all-results', dest='report_all_results',
73 action='store_true', 88 action='store_true',
74 help='Reports all data collected, not just FPS') 89 help='Reports all data collected, not just FPS')
75 90
76 def CustomizeBrowserOptions(self, options): 91 def CustomizeBrowserOptions(self, options):
77 if not options.no_gpu_benchmarking_extension: 92 if not options.no_gpu_benchmarking_extension:
78 options.extra_browser_args.append('--enable-gpu-benchmarking') 93 options.extra_browser_args.append('--enable-gpu-benchmarking')
79 94
80 def CanRunForPage(self, page): 95 def CanRunForPage(self, page):
81 return hasattr(page, 'scrolling') 96 return hasattr(page, 'scrolling')
82 97
83 def MeasurePage(self, page, tab, results): 98 def MeasurePage(self, page, tab, results):
84 rendering_stats_deltas = tab.runtime.Evaluate( 99 rendering_stats_deltas = tab.runtime.Evaluate(
85 'window.__renderingStatsDeltas') 100 'window.__renderingStatsDeltas')
86 101
87 if not (rendering_stats_deltas['numFramesSentToScreen'] > 0): 102 if not (rendering_stats_deltas['numFramesSentToScreen'] > 0):
88 raise DidNotScrollException() 103 raise DidNotScrollException()
89 104
105 # First Paint Time
106 if tab.browser.is_content_shell:
107 results.Add('first_paint', 'seconds', 'unsupported')
108 return
nduca 2012/11/20 23:32:39 erm, you're skipping all further stuff here
hartmanng 2012/11/20 23:36:24 uh... oops...
109
110 tab.runtime.Execute("""
111 window.__rafFired = false;
112 window.webkitRequestAnimationFrame(function() {
113 window.__rafFired = true;
114 });
115 """)
116 util.WaitFor(lambda: tab.runtime.Evaluate('window.__rafFired'), 60)
117
118 first_paint_secs = tab.runtime.Evaluate(
119 'window.chrome.loadTimes().firstPaintTime - ' +
120 'window.chrome.loadTimes().requestTime')
121
122 results.Add('first_paint', 'seconds', round(first_paint_secs, 1))
123
90 CalcScrollResults(rendering_stats_deltas, results) 124 CalcScrollResults(rendering_stats_deltas, results)
91 if self.options.report_all_results: 125 if self.options.report_all_results:
92 for k, v in rendering_stats_deltas.iteritems(): 126 for k, v in rendering_stats_deltas.iteritems():
93 results.Add(k, '', v) 127 results.Add(k, '', v)
OLDNEW
« no previous file with comments | « tools/perf/perf_tools/scrolling_benchmark_unittest.py ('k') | tools/perf/perf_tools/smoothness_benchmark_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698