From d9cc91ff61fa560b385fffa3f0461b0d3226df1a Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Sun, 16 Oct 2022 15:59:36 +0800 Subject: [PATCH] remove overhead analysis by Timeline event since timeline itself needs time --- packages/smooth/lib/src/actor.dart | 40 ++++++++++++------------- scripts/timeline/overhead.py | 48 ------------------------------ 2 files changed, 19 insertions(+), 69 deletions(-) delete mode 100644 scripts/timeline/overhead.py diff --git a/packages/smooth/lib/src/actor.dart b/packages/smooth/lib/src/actor.dart index 7787cbf9..ea5ce4ba 100644 --- a/packages/smooth/lib/src/actor.dart +++ b/packages/smooth/lib/src/actor.dart @@ -23,30 +23,28 @@ class Actor { final serviceLocator = ServiceLocator.instance; if (serviceLocator.auxiliaryTreeRegistry.trees.isEmpty) return; - Timeline.timeSync('MaybePreemptRender', () { - final timeManager = serviceLocator.timeManager; - final now = clock.nowSimple(); - final nowTimestamp = - serviceLocator.timeConverter.dateTimeToAdjustedFrameTimeStamp(now); - - if (timeManager.thresholdActOnBuildOrLayoutPhaseTimeStamp! >= - nowTimestamp) { - // _debugLogMaybePreemptRender(haltReason: 'TimeTooEarly'); - return; - } + final timeManager = serviceLocator.timeManager; + final now = clock.nowSimple(); + final nowTimestamp = + serviceLocator.timeConverter.dateTimeToAdjustedFrameTimeStamp(now); + + if (timeManager.thresholdActOnBuildOrLayoutPhaseTimeStamp! >= + nowTimestamp) { + // _debugLogMaybePreemptRender(haltReason: 'TimeTooEarly'); + return; + } - // this should be called *after* time check, since this may be a bit more - // expensive - if (!_preludeBeforePreemptRender()) { - // _debugLogMaybePreemptRender(haltReason: 'PreludeDisagree'); - return; - } + // this should be called *after* time check, since this may be a bit more + // expensive + if (!_preludeBeforePreemptRender()) { + // _debugLogMaybePreemptRender(haltReason: 'PreludeDisagree'); + return; + } - _preemptRenderRaw( - debugReason: RunPipelineReason.preemptRenderBuildOrLayoutPhase); + _preemptRenderRaw( + debugReason: RunPipelineReason.preemptRenderBuildOrLayoutPhase); - timeManager.afterBuildOrLayoutPhasePreemptRender(now: nowTimestamp); - }); + timeManager.afterBuildOrLayoutPhasePreemptRender(now: nowTimestamp); } void maybePreemptRenderPostDrawFramePhase() { diff --git a/scripts/timeline/overhead.py b/scripts/timeline/overhead.py deleted file mode 100644 index b2711e47..00000000 --- a/scripts/timeline/overhead.py +++ /dev/null @@ -1,48 +0,0 @@ -import numpy as np - -try: - get_ipython().magic('%load_ext autoreload') - get_ipython().magic('%autoreload 2') -except: - pass # ignore - -import matplotlib - -matplotlib.use("MacOSX") - -from argparse import ArgumentParser -import json -from pathlib import Path -from typing import Dict - -TraceEvent = Dict - -parser = ArgumentParser() -parser.add_argument('input') -args = parser.parse_args() -path_input = args.input - -# %% - -data = json.loads(Path(path_input).read_text()) - -# just quite ugly script... -durations = [] -pending_start_time = None -for e in data['traceEvents']: - if e['name'] == 'MaybePreemptRender': - if e['ph'] == 'B': - pending_start_time = e['ts'] - elif e['ph'] == 'E' and pending_start_time is not None: - end_time = e['ts'] - durations.append(end_time - pending_start_time) - # print(pending_start_time, end_time) - pending_start_time = None - elif e['name'] == 'PreemptRender': - pending_start_time = None - -durations = np.array(durations) - -print( - f'avg_per_event={np.average(durations): .2f}us' -)