From 6f7027bccd5dc68f321f150aa44d05ab4088c7ba Mon Sep 17 00:00:00 2001 From: Andrey Goncharov Date: Tue, 10 Oct 2023 06:51:13 -0700 Subject: [PATCH] Add ui performance tracker Reviewed By: lblasa Differential Revision: D50121106 fbshipit-source-id: 54650de65e11c80ea776eafd85cdd5b7749a4fd4 --- .../src/startFlipperDesktop.tsx | 2 ++ .../src/utils/UIPerfTracker.tsx | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 desktop/flipper-ui-core/src/utils/UIPerfTracker.tsx diff --git a/desktop/flipper-ui-core/src/startFlipperDesktop.tsx b/desktop/flipper-ui-core/src/startFlipperDesktop.tsx index c8c95a78e..4db34d4ce 100644 --- a/desktop/flipper-ui-core/src/startFlipperDesktop.tsx +++ b/desktop/flipper-ui-core/src/startFlipperDesktop.tsx @@ -44,6 +44,7 @@ import {loadTheme} from './utils/loadTheme'; import {connectFlipperServerToStore} from './dispatcher/flipperServer'; import {enableConnectivityHook} from './chrome/ConnectivityLogs'; import ReactDOM from 'react-dom'; +import {uiPerfTracker} from './utils/UIPerfTracker'; class AppFrame extends React.Component< {logger: Logger; persistor: Persistor}, @@ -142,6 +143,7 @@ function init(flipperServer: FlipperServer) { initLogTailer(); const logger = initLogger(store); + uiPerfTracker._init(); setLoggerInstance(logger); startGlobalErrorHandling(); diff --git a/desktop/flipper-ui-core/src/utils/UIPerfTracker.tsx b/desktop/flipper-ui-core/src/utils/UIPerfTracker.tsx new file mode 100644 index 000000000..5befefae3 --- /dev/null +++ b/desktop/flipper-ui-core/src/utils/UIPerfTracker.tsx @@ -0,0 +1,29 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +import {getLogger} from 'flipper-common'; + +type UIPerfEvents = 'ui-perf-everything-finally-loaded-jeeeez'; + +class UIPerfTracker { + private t0!: number; + + _init() { + this.t0 = performance.now(); + } + + track(event: UIPerfEvents) { + const tx = performance.now(); + getLogger().track('performance', event, { + time: tx - this.t0, + }); + } +} + +export const uiPerfTracker = new UIPerfTracker();