confusablematcher-js-interop
Version:
TypeScript NAPI Interop for ConfusableMatcher.
32 lines (29 loc) • 950 B
text/typescript
import async_hooks from 'async_hooks';
import { performance, PerformanceObserver } from 'perf_hooks';
const promiseAsyncResources = new Set();
const hook = async_hooks.createHook({
destroy(id) {
if (promiseAsyncResources.has(id)) {
promiseAsyncResources.delete(id);
performance.mark(`PROMISE-${id}-Destroy`);
performance.measure(`PROMISE-${id}`, `PROMISE-${id}-Init`, `PROMISE-${id}-Destroy`);
}
},
init(id, type) {
if (type === 'PROMISE') {
performance.mark(`PROMISE-${id}-Init`);
promiseAsyncResources.add(id);
}
},
});
const perf = new PerformanceObserver((list) => {
const [entry] = list.getEntries();
if (entry) {
console.log(`${entry.name}: ${entry.duration}ms`);
performance.clearMarks();
}
});
export function start() {
hook.enable();
perf.observe({ buffered: true, entryTypes: ['measure'] });
}