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

Side by Side Diff: tools/perf/perf_tools/scrolling_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 perf_tools import smoothness_benchmark
5 5
6 class DidNotScrollException(multi_page_benchmark.MeasurementFailure): 6 class ScrollingBenchmark(smoothness_benchmark.SmoothnessBenchmark):
7 def __init__(self): 7 def __init__(self):
8 super(DidNotScrollException, self).__init__('Page did not scroll') 8 super(ScrollingBenchmark, self).__init__()
9
10 def GetOrZero(stat, rendering_stats_deltas):
11 if stat in rendering_stats_deltas:
12 return rendering_stats_deltas[stat]
13 return 0
14
15 def DivideIfPossibleOrZero(numerator, denominator):
16 if denominator == 0:
17 return 0
18 return numerator / denominator
19
20 def CalcScrollResults(rendering_stats_deltas, results):
21 num_frames_sent_to_screen = rendering_stats_deltas['numFramesSentToScreen']
22
23 mean_frame_time_seconds = (
24 rendering_stats_deltas['totalTimeInSeconds'] /
25 float(num_frames_sent_to_screen))
26
27 dropped_percent = (
28 rendering_stats_deltas['droppedFrameCount'] /
29 float(num_frames_sent_to_screen))
30
31
32 totalPaintTime = GetOrZero('totalPaintTimeInSeconds',
33 rendering_stats_deltas)
34
35 totalRasterizeTime = GetOrZero('totalRasterizeTimeInSeconds',
36 rendering_stats_deltas)
37
38 totalPixelsPainted = GetOrZero('totalPixelsPainted',
39 rendering_stats_deltas)
40
41 totalPixelsRasterized = GetOrZero('totalPixelsRasterized',
42 rendering_stats_deltas)
43
44
45 megapixelsPaintedPerSecond = DivideIfPossibleOrZero(
46 (totalPixelsPainted / 1000000.0), totalPaintTime)
47
48 megapixelsRasterizedPerSecond = DivideIfPossibleOrZero(
49 (totalPixelsRasterized / 1000000.0), totalRasterizeTime)
50
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)
55 results.Add('total_rasterize_time', 'seconds', totalRasterizeTime)
56 results.Add('total_pixels_painted', '', totalPixelsPainted)
57 results.Add('total_pixels_rasterized', '', totalPixelsRasterized)
58 results.Add('megapixels_painted_per_second', '', megapixelsPaintedPerSecond)
59 results.Add('megapixels_rasterized_per_second', '',
60 megapixelsRasterizedPerSecond)
61 results.Add('total_paint_and_rasterize_time', 'seconds', totalPaintTime +
62 totalRasterizeTime)
63
64 class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark):
65 def __init__(self):
66 super(ScrollingBenchmark, self).__init__('scrolling')
67
68 def AddCommandLineOptions(self, parser):
69 parser.add_option('--no-gpu-benchmarking-extension', action='store_true',
70 dest='no_gpu_benchmarking_extension',
71 help='Disable the chrome.gpuBenchmarking extension.')
72 parser.add_option('--report-all-results', dest='report_all_results',
73 action='store_true',
74 help='Reports all data collected, not just FPS')
75
76 def CustomizeBrowserOptions(self, options):
77 if not options.no_gpu_benchmarking_extension:
78 options.extra_browser_args.append('--enable-gpu-benchmarking')
79
80 def CanRunForPage(self, page):
81 return hasattr(page, 'scrolling')
82
83 def MeasurePage(self, page, tab, results):
84 rendering_stats_deltas = tab.runtime.Evaluate(
85 'window.__renderingStatsDeltas')
86
87 if not (rendering_stats_deltas['numFramesSentToScreen'] > 0):
88 raise DidNotScrollException()
89
90 CalcScrollResults(rendering_stats_deltas, results)
91 if self.options.report_all_results:
92 for k, v in rendering_stats_deltas.iteritems():
93 results.Add(k, '', v)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698