@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
38 lines • 1.25 kB
JavaScript
import { isPerformanceAPIAvailable } from './is-performance-api-available';
const measureMap = new Map();
export function startMeasure(measureName) {
if (!isPerformanceAPIAvailable()) {
return;
}
performance.mark(`${measureName}::start`);
measureMap.set(measureName, performance.now());
}
export function stopMeasure(measureName, onMeasureComplete) {
if (!isPerformanceAPIAvailable()) {
return;
}
performance.mark(`${measureName}::end`);
const start = onMeasureComplete ? measureMap.get(measureName) : undefined;
try {
performance.measure(measureName, `${measureName}::start`, `${measureName}::end`);
} catch (error) {} finally {
if (onMeasureComplete) {
const entry = performance.getEntriesByName(measureName).pop();
if (entry) {
onMeasureComplete(entry.duration, entry.startTime);
} else if (start) {
onMeasureComplete(performance.now() - start, start);
}
}
clearMeasure(measureName);
}
}
export function clearMeasure(measureName) {
if (!isPerformanceAPIAvailable()) {
return;
}
measureMap.delete(measureName);
performance.clearMarks(`${measureName}::start`);
performance.clearMarks(`${measureName}::end`);
performance.clearMeasures(measureName);
}