Index: tools/telemetry/telemetry/web_perf/metrics/smoothness.py |
diff --git a/tools/telemetry/telemetry/web_perf/metrics/smoothness.py b/tools/telemetry/telemetry/web_perf/metrics/smoothness.py |
index f63fea8bed3b45ec5c6ceaab2248f226f85c7e76..127e0ad05ec0487d5f0fda81284836ab0ba80c06 100644 |
--- a/tools/telemetry/telemetry/web_perf/metrics/smoothness.py |
+++ b/tools/telemetry/telemetry/web_perf/metrics/smoothness.py |
@@ -87,6 +87,21 @@ class SmoothnessMetric(timeline_based_metric.TimelineBasedMetric): |
if d / refresh_period >= min_normalized_delta] |
return (deltas, [delta / refresh_period for delta in deltas]) |
+ @staticmethod |
+ def _JoinTimestampRanges(frame_timestamps): |
+ """Joins ranges of timestamps, adjusting timestamps to remove deltas |
+ between the start of a range and the end of the prior range. |
+ """ |
+ timestamps = [] |
+ for timestamp_range in frame_timestamps: |
+ if len(timestamps) == 0: |
+ timestamps.extend(timestamp_range) |
+ else: |
+ for i in range(1, len(timestamp_range)): |
+ timestamps.append(timestamps[-1] + |
+ timestamp_range[i] - timestamp_range[i-1]) |
+ return timestamps |
+ |
def _ComputeSurfaceFlingerMetric(self, page, stats): |
jank_count = None |
avg_surface_fps = None |
@@ -94,7 +109,7 @@ class SmoothnessMetric(timeline_based_metric.TimelineBasedMetric): |
frame_lengths = None |
none_value_reason = None |
if self._HasEnoughFrames(stats.frame_timestamps): |
mithro-old
2015/04/21 03:45:58
Why does this metric use stats.frame_timestamps ra
vmiura
2015/04/21 22:04:46
I think you're right, it looks like these metrics
|
- timestamps = FlattenList(stats.frame_timestamps) |
+ timestamps = self._JoinTimestampRanges(stats.frame_timestamps) |
frame_count = len(timestamps) |
milliseconds = timestamps[-1] - timestamps[0] |
min_normalized_frame_length = 0.5 |