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

Unified Diff: tools/perf/metrics/rendering_stats.py

Issue 26031002: cc: Remove unused metrics from RenderingStats. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed raster_worker_pool_perftest.cc Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/metrics/gpu_rendering_stats.py ('k') | tools/perf/metrics/smoothness.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/metrics/rendering_stats.py
diff --git a/tools/perf/metrics/rendering_stats.py b/tools/perf/metrics/rendering_stats.py
new file mode 100644
index 0000000000000000000000000000000000000000..b2e556632b09c3da9b1f48f534332e0d3b951111
--- /dev/null
+++ b/tools/perf/metrics/rendering_stats.py
@@ -0,0 +1,95 @@
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+class RenderingStats(object):
+ def __init__(self, smoothness_marker, gesture_marker, rendering_stats_deltas,
+ used_gpu_benchmarking):
+ """
+ Utility class for extracting rendering statistics from the timeline (or
+ other loggin facilities), and providing them in a common format to classes
+ that compute benchmark metrics from this data.
+
+ Stats can either be numbers, or lists of numbers. Classes that calculate
+ metrics from the stats must be able to handle both cases. The length of
+ different list stats may vary.
+
+ All *_time values are measured in seconds.
+ """
+ self.renderer_process = smoothness_marker.start_thread.parent
+ self.start = gesture_marker.start
+ self.end = self.start + gesture_marker.duration
+
+ self.total_time = (self.end - self.start) / 1000.0
+ self.frame_count = []
+ self.frame_timestamps = []
+ self.paint_time = []
+ self.painted_pixel_count = []
+ self.record_time = []
+ self.recorded_pixel_count = []
+ self.rasterize_time = []
+ self.rasterized_pixel_count = []
+
+ if used_gpu_benchmarking:
+ self.initMainThreadStatsFromTimeline()
+ self.initImplThreadStatsFromTimeline()
+ else:
+ self.initFrameCountsFromRenderingStats(rendering_stats_deltas)
+
+ def initFrameCountsFromRenderingStats(self, rs):
+ # TODO(ernstm): remove numFramesSentToScreen when RenderingStats
+ # cleanup CL was picked up by the reference build.
+ if 'frameCount' in rs:
+ self.frame_count = rs.get('frameCount', 0)
+ else:
+ self.frame_count = rs.get('numFramesSentToScreen', 0)
+
+ def initMainThreadStatsFromTimeline(self):
+ for event in self.renderer_process.IterAllSlicesOfName(
+ 'MainThreadRenderingStats::IssueTraceEvent'):
+ if event.start >= self.start and event.end <= self.end:
+ if 'data' not in event.args:
+ continue
+ # TODO(ernstm): remove screen_frame_count when RenderingStats
+ # cleanup CL was picked up by the reference build.
+ if 'frame_count' in event.args['data']:
+ frame_count = event.args['data']['frame_count']
+ else:
+ frame_count = event.args['data']['screen_frame_count']
+ self.frame_count.append(frame_count)
+ if frame_count > 1:
+ raise ValueError, 'trace contains multi-frame render stats'
+ if frame_count == 1:
+ self.frame_timestamps.append(
+ event.start)
+ self.paint_time.append(
+ event.args['data']['paint_time'])
+ self.painted_pixel_count.append(
+ event.args['data']['painted_pixel_count'])
+ self.record_time.append(
+ event.args['data']['record_time'])
+ self.recorded_pixel_count.append(
+ event.args['data']['recorded_pixel_count'])
+
+ def initImplThreadStatsFromTimeline(self):
+ for event in self.renderer_process.IterAllSlicesOfName(
+ 'ImplThreadRenderingStats::IssueTraceEvent'):
+ if event.start >= self.start and event.end <= self.end:
+ if 'data' not in event.args:
+ continue
+ # TODO(ernstm): remove screen_frame_count when RenderingStats
+ # cleanup CL was picked up by the reference build.
+ if 'frame_count' in event.args['data']:
+ frame_count = event.args['data']['frame_count']
+ else:
+ frame_count = event.args['data']['screen_frame_count']
+ self.frame_count.append(frame_count)
+ if frame_count > 1:
+ raise ValueError, 'trace contains multi-frame render stats'
+ if frame_count == 1:
+ self.frame_timestamps.append(
+ event.start)
+ self.rasterize_time.append(
+ event.args['data']['rasterize_time'])
+ self.rasterized_pixel_count.append(
+ event.args['data']['rasterized_pixel_count'])
« no previous file with comments | « tools/perf/metrics/gpu_rendering_stats.py ('k') | tools/perf/metrics/smoothness.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698