grafana/public/app/core/utils/metrics.ts
Oscar Kilhed e7f40493e4
DashboardScene: Measure and report scene load time (#86267)
* measure scene load time

* Fix tests that fail due to performance not being the proper global performance object in jest

* add isScene parameter to tracking test
2024-04-24 11:45:32 +02:00

38 lines
999 B
TypeScript

import { reportPerformance } from '../services/echo/EchoSrv';
export function startMeasure(eventName: string) {
if (!performance || !performance.mark) {
return;
}
try {
performance.mark(`${eventName}_started`);
} catch (error) {
console.error(`[Metrics] Failed to startMeasure ${eventName}`, error);
}
}
export function stopMeasure(eventName: string) {
if (!performance || !performance.mark) {
return;
}
try {
const started = `${eventName}_started`;
const completed = `${eventName}_completed`;
const measured = `${eventName}_measured`;
performance.mark(completed);
const measure = performance.measure(measured, started, completed);
reportPerformance(`${eventName}_ms`, measure.duration);
performance.clearMarks(started);
performance.clearMarks(completed);
performance.clearMeasures(measured);
return measure;
} catch (error) {
console.error(`[Metrics] Failed to stopMeasure ${eventName}`, error);
return;
}
}