tracking for large frame drops

Summary:
`largeFrameDrops` are added to the usage tracking.
Similar to our other apps, we are considering a drop of 4 or more frames as a large frame drop. While a single frame drop might not be relevant to the user, large frame drops are a more relevant number to optimize for.

Reviewed By: passy

Differential Revision: D9358795

fbshipit-source-id: d9354695c816ba6c40676df6f3c6f3f070e28269
This commit is contained in:
Daniel Büchele
2018-08-16 04:58:54 -07:00
committed by Facebook Github Bot
parent 6a746d744e
commit 11ba553ab8

View File

@@ -12,6 +12,7 @@ import type Logger from '../fb-stubs/Logger.js';
export default (store: Store, logger: Logger) => {
let droppedFrames: number = 0;
let largeFrameDrops: number = 0;
function droppedFrameDetection(
past: DOMHighResTimeStamp,
isWindowFocused: () => boolean,
@@ -19,8 +20,12 @@ export default (store: Store, logger: Logger) => {
const now = performance.now();
requestAnimationFrame(() => droppedFrameDetection(now, isWindowFocused));
const dropped = Math.round((now - past) / (1000 / 60) - 1);
if (dropped > 0 && isWindowFocused()) {
if (!isWindowFocused() || dropped < 1) {
return;
}
droppedFrames += dropped;
if (dropped > 3) {
largeFrameDrops++;
}
}
@@ -42,12 +47,14 @@ export default (store: Store, logger: Logger) => {
}
const info = {
droppedFrames,
largeFrameDrops,
os: selectedDevice.os,
device: selectedDevice.title,
plugin: selectedPlugin,
};
// reset dropped frames counter
droppedFrames = 0;
largeFrameDrops = 0;
if (selectedApp) {
const client = clients.find((c: Client) => c.id === selectedApp);