add tracking for dropped frames

Summary: Adding dropped frames counter to usage events. This will allow us to track performance improvements.

Reviewed By: passy

Differential Revision: D9238608

fbshipit-source-id: d9adbb0ed72aaf13802f5eef39606970b64c8e36
This commit is contained in:
Daniel Büchele
2018-08-10 09:00:18 -07:00
committed by Facebook Github Bot
parent aace545ba6
commit 2b98f05d03

View File

@@ -11,29 +11,51 @@ import type {Store} from '../reducers/index.js';
import type Logger from '../fb-stubs/Logger.js'; import type Logger from '../fb-stubs/Logger.js';
export default (store: Store, logger: Logger) => { export default (store: Store, logger: Logger) => {
let droppedFrames: number = 0;
function droppedFrameDetection(
past: DOMHighResTimeStamp,
isWindowFocused: () => boolean,
) {
const now = performance.now();
requestAnimationFrame(() => droppedFrameDetection(now, isWindowFocused));
if (isWindowFocused()) {
droppedFrames += Math.max(0, Math.round(now - past / (1000 / 60) - 1));
}
}
droppedFrameDetection(
performance.now(),
() => store.getState().application.windowIsFocused,
);
ipcRenderer.on('trackUsage', () => { ipcRenderer.on('trackUsage', () => {
const { const {
selectedDevice, selectedDevice,
selectedPlugin, selectedPlugin,
selectedApp, selectedApp,
clients,
} = store.getState().connections; } = store.getState().connections;
if (!selectedDevice || !selectedPlugin) { if (!selectedDevice || !selectedPlugin) {
return; return;
} }
if (selectedApp) { const info = {
logger.track('usage', 'ping', { droppedFrames,
app: selectedApp,
device: selectedDevice,
os: selectedDevice.os, os: selectedDevice.os,
plugin: selectedPlugin,
});
} else {
logger.track('usage', 'ping', {
os: selectedDevice.os,
plugin: selectedPlugin,
device: selectedDevice.title, device: selectedDevice.title,
}); plugin: selectedPlugin,
};
// reset dropped frames counter
droppedFrames = 0;
if (selectedApp) {
const client = clients.find((c: Client) => c.id === selectedApp);
if (client) {
// $FlowFixMe
info.app = client.query.app;
} }
}
logger.track('usage', 'ping', info);
}); });
}; };