def testArithmeticMean(self): # The ArithmeticMean function computes the simple average. self.assertAlmostEquals(40/3.0, statistics.ArithmeticMean([10, 10, 20], 3)) self.assertAlmostEquals(15.0, statistics.ArithmeticMean([10, 20], 2)) # Both lists of values or single values can be given for either argument. self.assertAlmostEquals(40/3.0, statistics.ArithmeticMean(40, [1, 1, 1])) # If the 'count' is zero, then zero is returned. self.assertEquals(0, statistics.ArithmeticMean(4.0, 0)) self.assertEquals(0, statistics.ArithmeticMean(4.0, []))
def AddResults(self, tab, results): if self._stats.mouse_wheel_scroll_latency: mean_mouse_wheel_scroll_latency = statistics.ArithmeticMean( self._stats.mouse_wheel_scroll_latency, len(self._stats.mouse_wheel_scroll_latency)) results.Add('mean_mouse_wheel_scroll_latency', 'ms', round(mean_mouse_wheel_scroll_latency, 3)) if self._stats.touch_scroll_latency: mean_touch_scroll_latency = statistics.ArithmeticMean( self._stats.touch_scroll_latency, len(self._stats.touch_scroll_latency)) results.Add('mean_touch_scroll_latency', 'ms', round(mean_touch_scroll_latency, 3)) if self._stats.js_touch_scroll_latency: mean_js_touch_scroll_latency = statistics.ArithmeticMean( self._stats.js_touch_scroll_latency, len(self._stats.js_touch_scroll_latency)) results.Add('mean_js_touch_scroll_latency', 'ms', round(mean_js_touch_scroll_latency, 3)) # List of raw frame times. frame_times = FlattenList(self._stats.frame_times) results.Add('frame_times', 'ms', frame_times) # Arithmetic mean of frame times. mean_frame_time = statistics.ArithmeticMean(frame_times, len(frame_times)) results.Add('mean_frame_time', 'ms', round(mean_frame_time, 3)) # Absolute discrepancy of frame time stamps. jank = statistics.FrameDiscrepancy(self._stats.frame_timestamps) results.Add('jank', '', round(jank, 4)) # Are we hitting 60 fps for 95 percent of all frames? # We use 19ms as a somewhat looser threshold, instead of 1000.0/60.0. percentile_95 = statistics.Percentile(frame_times, 95.0) results.Add('mostly_smooth', 'score', 1.0 if percentile_95 < 19.0 else 0.0) if tab.browser.platform.IsRawDisplayFrameRateSupported(): for r in tab.browser.platform.GetRawDisplayFrameRateMeasurements(): if r.value is None: raise MissingDisplayFrameRateError(r.name) results.Add(r.name, r.unit, r.value)
def AddResults(self, tab, results): # List of raw frame times. results.Add('frame_times', 'ms', self._stats.frame_times) # Arithmetic mean of frame times. mean_frame_time = statistics.ArithmeticMean(self._stats.frame_times, len(self._stats.frame_times)) results.Add('mean_frame_time', 'ms', round(mean_frame_time, 3)) # Absolute discrepancy of frame time stamps. jank = statistics.FrameDiscrepancy(self._stats.frame_timestamps) results.Add('jank', '', round(jank, 4)) # Are we hitting 60 fps for 95 percent of all frames? (Boolean value) # We use 17ms as a slightly looser threshold, instead of 1000.0/60.0. results.Add('mostly_smooth', '', statistics.Percentile(self._stats.frame_times, 95.0) < 17.0)