1 line
8.0 KiB
Plaintext
1 line
8.0 KiB
Plaintext
{"version":3,"file":"index.mjs","sources":["../../../src/stats/index.ts"],"sourcesContent":["import { cancelFrame, frame, frameData } from \"../frameloop\"\nimport { activeAnimations } from \"./animation-count\"\nimport { ActiveStatsBuffer, statsBuffer } from \"./buffer\"\nimport { StatsSummary, Summary } from \"./types\"\n\nfunction record() {\n const { value } = statsBuffer\n\n if (value === null) {\n cancelFrame(record)\n return\n }\n\n value.frameloop.rate.push(frameData.delta)\n value.animations.mainThread.push(activeAnimations.mainThread)\n value.animations.waapi.push(activeAnimations.waapi)\n value.animations.layout.push(activeAnimations.layout)\n}\n\nfunction mean(values: number[]) {\n return values.reduce((acc, value) => acc + value, 0) / values.length\n}\n\nfunction summarise(\n values: number[],\n calcAverage: (allValues: number[]) => number = mean\n): Summary {\n if (values.length === 0) {\n return {\n min: 0,\n max: 0,\n avg: 0,\n }\n }\n\n return {\n min: Math.min(...values),\n max: Math.max(...values),\n avg: calcAverage(values),\n }\n}\n\nconst msToFps = (ms: number) => Math.round(1000 / ms)\n\nfunction clearStatsBuffer() {\n statsBuffer.value = null\n statsBuffer.addProjectionMetrics = null\n}\n\nfunction reportStats(): StatsSummary {\n const { value } = statsBuffer\n\n if (!value) {\n throw new Error(\"Stats are not being measured\")\n }\n\n clearStatsBuffer()\n cancelFrame(record)\n\n const summary = {\n frameloop: {\n setup: summarise(value.frameloop.setup),\n rate: summarise(value.frameloop.rate),\n read: summarise(value.frameloop.read),\n resolveKeyframes: summarise(value.frameloop.resolveKeyframes),\n preUpdate: summarise(value.frameloop.preUpdate),\n update: summarise(value.frameloop.update),\n preRender: summarise(value.frameloop.preRender),\n render: summarise(value.frameloop.render),\n postRender: summarise(value.frameloop.postRender),\n },\n animations: {\n mainThread: summarise(value.animations.mainThread),\n waapi: summarise(value.animations.waapi),\n layout: summarise(value.animations.layout),\n },\n layoutProjection: {\n nodes: summarise(value.layoutProjection.nodes),\n calculatedTargetDeltas: summarise(\n value.layoutProjection.calculatedTargetDeltas\n ),\n calculatedProjections: summarise(\n value.layoutProjection.calculatedProjections\n ),\n },\n }\n\n /**\n * Convert the rate to FPS\n */\n const { rate } = summary.frameloop\n rate.min = msToFps(rate.min)\n rate.max = msToFps(rate.max)\n rate.avg = msToFps(rate.avg)\n // Swap these as the min and max are inverted when converted to FPS\n ;[rate.min, rate.max] = [rate.max, rate.min]\n\n return summary\n}\n\nexport function recordStats() {\n if (statsBuffer.value) {\n clearStatsBuffer()\n throw new Error(\"Stats are already being measured\")\n }\n\n const newStatsBuffer = statsBuffer as unknown as ActiveStatsBuffer\n\n newStatsBuffer.value = {\n frameloop: {\n setup: [],\n rate: [],\n read: [],\n resolveKeyframes: [],\n preUpdate: [],\n update: [],\n preRender: [],\n render: [],\n postRender: [],\n },\n animations: {\n mainThread: [],\n waapi: [],\n layout: [],\n },\n layoutProjection: {\n nodes: [],\n calculatedTargetDeltas: [],\n calculatedProjections: [],\n },\n }\n\n newStatsBuffer.addProjectionMetrics = (metrics) => {\n const { layoutProjection } = newStatsBuffer.value\n layoutProjection.nodes.push(metrics.nodes)\n layoutProjection.calculatedTargetDeltas.push(\n metrics.calculatedTargetDeltas\n )\n layoutProjection.calculatedProjections.push(\n metrics.calculatedProjections\n )\n }\n\n frame.postRender(record, true)\n\n return reportStats\n}\n"],"names":[],"mappings":"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"} |