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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: tools/perf/perf_tools/smoothness_benchmark.py
diff --git a/tools/perf/perf_tools/scrolling_benchmark.py b/tools/perf/perf_tools/smoothness_benchmark.py
similarity index 62%
copy from tools/perf/perf_tools/scrolling_benchmark.py
copy to tools/perf/perf_tools/smoothness_benchmark.py
index 736703320cb6299f27323435ef0f4c3923b6e85c..fa668db9328677921fe007c5923a15641a0becd1 100644
--- a/tools/perf/perf_tools/scrolling_benchmark.py
+++ b/tools/perf/perf_tools/smoothness_benchmark.py
@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from telemetry import multi_page_benchmark
+from telemetry import util
class DidNotScrollException(multi_page_benchmark.MeasurementFailure):
def __init__(self):
@@ -28,7 +29,12 @@ def CalcScrollResults(rendering_stats_deltas, results):
rendering_stats_deltas['droppedFrameCount'] /
float(num_frames_sent_to_screen))
+ results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3))
+ results.Add('dropped_percent', '%', round(dropped_percent * 100, 1),
+ data_type='unimportant')
+
+def CalcPaintingResults(rendering_stats_deltas, results):
totalPaintTime = GetOrZero('totalPaintTimeInSeconds',
rendering_stats_deltas)
@@ -41,29 +47,62 @@ def CalcScrollResults(rendering_stats_deltas, results):
totalPixelsRasterized = GetOrZero('totalPixelsRasterized',
rendering_stats_deltas)
-
megapixelsPaintedPerSecond = DivideIfPossibleOrZero(
(totalPixelsPainted / 1000000.0), totalPaintTime)
megapixelsRasterizedPerSecond = DivideIfPossibleOrZero(
(totalPixelsRasterized / 1000000.0), totalRasterizeTime)
- results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3))
- results.Add('dropped_percent', '%', round(dropped_percent * 100, 1))
-
results.Add('total_paint_time', 'seconds', totalPaintTime)
- results.Add('total_rasterize_time', 'seconds', totalRasterizeTime)
- results.Add('total_pixels_painted', '', totalPixelsPainted)
- results.Add('total_pixels_rasterized', '', totalPixelsRasterized)
- results.Add('megapixels_painted_per_second', '', megapixelsPaintedPerSecond)
+ results.Add('total_rasterize_time', 'seconds', totalRasterizeTime,
+ data_type='unimportant')
+ results.Add('total_pixels_painted', '', totalPixelsPainted,
+ data_type='unimportant')
+ results.Add('total_pixels_rasterized', '', totalPixelsRasterized,
+ data_type='unimportant')
+ results.Add('megapixels_painted_per_second', '', megapixelsPaintedPerSecond,
+ data_type='unimportant')
results.Add('megapixels_rasterized_per_second', '',
- megapixelsRasterizedPerSecond)
+ megapixelsRasterizedPerSecond, data_type='unimportant')
results.Add('total_paint_and_rasterize_time', 'seconds', totalPaintTime +
- totalRasterizeTime)
-
-class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark):
+ totalRasterizeTime, data_type='unimportant')
+
+def CalcTextureUploadResults(rendering_stats_deltas, results):
+ if (('totalCommitCount' not in rendering_stats_deltas)
+ or rendering_stats_deltas['totalCommitCount'] == 0) :
+ averageCommitTimeMs = 0
+ else :
+ averageCommitTimeMs = (
+ 1000 * rendering_stats_deltas['totalCommitTimeInSeconds'] /
+ rendering_stats_deltas['totalCommitCount'])
+
+ results.Add('texture_upload_count', 'count',
+ GetOrZero('textureUploadCount', rendering_stats_deltas))
+ results.Add('average_commit_time', 'ms', averageCommitTimeMs,
+ data_type='unimportant')
+
+def CalcFirstPaintTimeResults(results, tab):
+ if tab.browser.is_content_shell:
+ results.Add('first_paint', 'ms', 'unsupported')
+ return
+
+ tab.runtime.Execute("""
+ window.__rafFired = false;
+ window.webkitRequestAnimationFrame(function() {
+ window.__rafFired = true;
+ });
+ """)
+ util.WaitFor(lambda: tab.runtime.Evaluate('window.__rafFired'), 60)
+
+ first_paint_secs = tab.runtime.Evaluate(
+ 'window.chrome.loadTimes().firstPaintTime - ' +
+ 'window.chrome.loadTimes().requestTime')
+
+ results.Add('first_paint', 'ms', round(first_paint_secs * 1000, 1))
+
+class SmoothnessBenchmark(multi_page_benchmark.MultiPageBenchmark):
def __init__(self):
- super(ScrollingBenchmark, self).__init__('scrolling')
+ super(SmoothnessBenchmark, self).__init__('scrolling')
def AddCommandLineOptions(self, parser):
parser.add_option('--no-gpu-benchmarking-extension', action='store_true',
@@ -87,7 +126,11 @@ class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark):
if not (rendering_stats_deltas['numFramesSentToScreen'] > 0):
raise DidNotScrollException()
+ CalcFirstPaintTimeResults(results, tab)
CalcScrollResults(rendering_stats_deltas, results)
+ CalcPaintingResults(rendering_stats_deltas, results)
+ CalcTextureUploadResults(rendering_stats_deltas, results)
+
if self.options.report_all_results:
for k, v in rendering_stats_deltas.iteritems():
results.Add(k, '', v)
« 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