Index: tools/telemetry/telemetry/web_perf/metrics/mainthread_jank_stats.py |
diff --git a/tools/telemetry/telemetry/web_perf/metrics/mainthread_jank_stats.py b/tools/telemetry/telemetry/web_perf/metrics/mainthread_jank_stats.py |
deleted file mode 100644 |
index 66a86a7052fe95d1d010ce47ac4a61cd8c5bc9b0..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/web_perf/metrics/mainthread_jank_stats.py |
+++ /dev/null |
@@ -1,91 +0,0 @@ |
-# Copyright 2014 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. |
- |
- |
-# A top level slice of a main thread can cause the webapp to behave |
-# unresponsively if its thread duration is greater than or equals to |
-# USER_PERCEIVABLE_DELAY_THRESHOLD_MS. Human eyes can perceive delay at low as |
-# 100ms, but since we use thread time instead of wall-time, we reduce the |
-# threshold further to 50ms to make room for other OS's activities. |
-USER_PERCEIVABLE_DELAY_THRESHOLD_MS = 50 |
- |
- |
-class _MainthreadJankStat(object): |
- """A small wrapper class for storing mainthread jank stats computed for |
- single record. |
- """ |
- |
- def __init__(self): |
- self.sum_big_top_slices_thread_time = 0 |
- self.biggest_top_slice_thread_time = 0 |
- |
- |
-def _ComputeMainthreadJankStatsForRecord(renderer_thread, record): |
- """Computes the mainthread jank stat on a record range. |
- |
- Returns: |
- An instance of _MainthreadJankStat, which has: |
- |
- sum_big_top_slices_thread_time is the total thread duration of all top |
- slices whose thread time ranges overlapped with (thread_start, thread_end) |
- and the overlapped thread duration is greater than or equal |
- USER_PERCEIVABLE_DELAY_THRESHOLD_MS. |
- |
- biggest_top_slice_thread_time is the biggest thread duration of all |
- top slices whose thread time ranges overlapped with |
- (thread_start, thread_end). |
- |
- Note: thread duration of each slices is computed using overlapped range |
- with (thread_start, thread_end). |
- """ |
- stat = _MainthreadJankStat() |
- for s in renderer_thread.toplevel_slices: |
- jank_thread_duration = record.GetOverlappedThreadTimeForSlice(s) |
- stat.biggest_top_slice_thread_time = max( |
- stat.biggest_top_slice_thread_time, jank_thread_duration) |
- if jank_thread_duration >= USER_PERCEIVABLE_DELAY_THRESHOLD_MS: |
- stat.sum_big_top_slices_thread_time += jank_thread_duration |
- return stat |
- |
- |
-class MainthreadJankStats(object): |
- """ |
- Utility class for extracting main thread jank statistics from the timeline |
- (or other loggin facilities), and providing them in a common format to |
- classes that compute benchmark metrics from this data. |
- |
- total_big_jank_thread_time is the total thread duration of all top |
- slices whose thread time ranges overlapped with any thread time ranges of |
- the records and the overlapped thread duration is greater than or equal |
- USER_PERCEIVABLE_DELAY_THRESHOLD_MS. |
- |
- biggest_jank_thread_time is the biggest thread duration of all |
- top slices whose thread time ranges overlapped with any of records' thread |
- time ranges. |
- """ |
- |
- def __init__(self, renderer_thread, interaction_records): |
- self._renderer_thread = renderer_thread |
- self._interaction_records = interaction_records |
- self._total_big_jank_thread_time = 0 |
- self._biggest_jank_thread_time = 0 |
- self._ComputeMainthreadJankStats() |
- |
- @property |
- def total_big_jank_thread_time(self): |
- return self._total_big_jank_thread_time |
- |
- @property |
- def biggest_jank_thread_time(self): |
- return self._biggest_jank_thread_time |
- |
- def _ComputeMainthreadJankStats(self): |
- for record in self._interaction_records: |
- record_jank_stat = _ComputeMainthreadJankStatsForRecord( |
- self._renderer_thread, record) |
- self._total_big_jank_thread_time += ( |
- record_jank_stat.sum_big_top_slices_thread_time) |
- self._biggest_jank_thread_time = ( |
- max(self._biggest_jank_thread_time, |
- record_jank_stat.biggest_top_slice_thread_time)) |