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

Side by Side Diff: telemetry/telemetry/web_perf/metrics/smoothness.py

Issue 1709053002: [Telemetry] Fix interaction record label warnings (Closed) Base URL: git@github.com:catapult-project/catapult@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 4
5 import logging 5 import logging
6 6
7 from telemetry.util import perf_tests_helper 7 from telemetry.util import perf_tests_helper
8 from telemetry.util import statistics 8 from telemetry.util import statistics
9 from telemetry.value import improvement_direction 9 from telemetry.value import improvement_direction
10 from telemetry.value import list_of_scalar_values 10 from telemetry.value import list_of_scalar_values
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 def __init__(self): 48 def __init__(self):
49 super(SmoothnessMetric, self).__init__() 49 super(SmoothnessMetric, self).__init__()
50 50
51 def AddResults(self, model, renderer_thread, interaction_records, results): 51 def AddResults(self, model, renderer_thread, interaction_records, results):
52 self.VerifyNonOverlappedRecords(interaction_records) 52 self.VerifyNonOverlappedRecords(interaction_records)
53 renderer_process = renderer_thread.parent 53 renderer_process = renderer_thread.parent
54 stats = rendering_stats.RenderingStats( 54 stats = rendering_stats.RenderingStats(
55 renderer_process, model.browser_process, model.surface_flinger_process, 55 renderer_process, model.browser_process, model.surface_flinger_process,
56 [r.GetBounds() for r in interaction_records]) 56 [r.GetBounds() for r in interaction_records])
57 has_surface_flinger_stats = model.surface_flinger_process is not None 57 has_surface_flinger_stats = model.surface_flinger_process is not None
58 self._PopulateResultsFromStats(results, stats, has_surface_flinger_stats) 58 self._PopulateResultsFromStats(results, stats, has_surface_flinger_stats,
59 interaction_records[0].label)
59 60
60 def _PopulateResultsFromStats(self, results, stats, 61 def _PopulateResultsFromStats(
61 has_surface_flinger_stats): 62 self, results, stats, has_surface_flinger_stats, tir_label):
62 page = results.current_page 63 page = results.current_page
63 values = [ 64 values = [
64 self._ComputeQueueingDuration(page, stats), 65 self._ComputeQueueingDuration(page, stats),
65 self._ComputeFrameTimeDiscrepancy(page, stats), 66 self._ComputeFrameTimeDiscrepancy(page, stats),
66 self._ComputeMeanPixelsApproximated(page, stats), 67 self._ComputeMeanPixelsApproximated(page, stats),
67 self._ComputeMeanPixelsCheckerboarded(page, stats) 68 self._ComputeMeanPixelsCheckerboarded(page, stats)
68 ] 69 ]
69 values += self._ComputeLatencyMetric(page, stats, 'input_event_latency', 70 values += self._ComputeLatencyMetric(page, stats, 'input_event_latency',
70 stats.input_event_latency) 71 stats.input_event_latency)
71 values += self._ComputeLatencyMetric(page, stats, 72 values += self._ComputeLatencyMetric(page, stats,
72 'main_thread_scroll_latency', 73 'main_thread_scroll_latency',
73 stats.main_thread_scroll_latency) 74 stats.main_thread_scroll_latency)
74 values.append(self._ComputeFirstGestureScrollUpdateLatencies(page, stats)) 75 values.append(self._ComputeFirstGestureScrollUpdateLatencies(page, stats))
75 values += self._ComputeFrameTimeMetric(page, stats) 76 values += self._ComputeFrameTimeMetric(page, stats)
76 if has_surface_flinger_stats: 77 if has_surface_flinger_stats:
77 values += self._ComputeSurfaceFlingerMetric(page, stats) 78 values += self._ComputeSurfaceFlingerMetric(page, stats)
78 79
79 for v in values: 80 for v in values:
81 v.tir_label = tir_label
80 results.AddValue(v) 82 results.AddValue(v)
81 83
82 def _HasEnoughFrames(self, list_of_frame_timestamp_lists): 84 def _HasEnoughFrames(self, list_of_frame_timestamp_lists):
83 """Whether we have collected at least two frames in every timestamp list.""" 85 """Whether we have collected at least two frames in every timestamp list."""
84 return all(len(s) >= 2 for s in list_of_frame_timestamp_lists) 86 return all(len(s) >= 2 for s in list_of_frame_timestamp_lists)
85 87
86 @staticmethod 88 @staticmethod
87 def _GetNormalizedDeltas(data, refresh_period, min_normalized_delta=None): 89 def _GetNormalizedDeltas(data, refresh_period, min_normalized_delta=None):
88 deltas = [t2 - t1 for t1, t2 in zip(data, data[1:])] 90 deltas = [t2 - t1 for t1, t2 in zip(data, data[1:])]
89 if min_normalized_delta != None: 91 if min_normalized_delta != None:
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 perf_tests_helper.FlattenList( 342 perf_tests_helper.FlattenList(
341 stats.checkerboarded_pixel_percentages)), 3) 343 stats.checkerboarded_pixel_percentages)), 3)
342 else: 344 else:
343 none_value_reason = NOT_ENOUGH_FRAMES_MESSAGE 345 none_value_reason = NOT_ENOUGH_FRAMES_MESSAGE
344 return scalar.ScalarValue( 346 return scalar.ScalarValue(
345 page, 'mean_pixels_checkerboarded', 'percent', 347 page, 'mean_pixels_checkerboarded', 'percent',
346 mean_pixels_checkerboarded, 348 mean_pixels_checkerboarded,
347 description='Percentage of pixels that were checkerboarded.', 349 description='Percentage of pixels that were checkerboarded.',
348 none_value_reason=none_value_reason, 350 none_value_reason=none_value_reason,
349 improvement_direction=improvement_direction.DOWN) 351 improvement_direction=improvement_direction.DOWN)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698