zappyzep/backend/src/utils/easyProfiler.ts

29 lines
760 B
TypeScript
Raw Normal View History

import { Profiler } from "knub/dist/Profiler";
import { performance } from "perf_hooks";
2021-10-05 23:54:52 +03:00
import { SECONDS } from "../utils";
export const startProfiling = (profiler: Profiler, key: string) => {
const startTime = performance.now();
return () => {
profiler.addDataPoint(key, performance.now() - startTime);
};
};
2021-10-05 23:54:52 +03:00
export const calculateBlocking = (coarseness = 10) => {
let last = performance.now();
let result = 0;
const interval = setInterval(() => {
const now = performance.now();
const blockedTime = Math.max(0, now - last - coarseness);
result += blockedTime;
last = now;
}, coarseness);
setTimeout(() => clearInterval(interval), 10 * SECONDS);
return () => {
clearInterval(interval);
return result;
};
};