import { performance, PerformanceEntry } from 'perf_hooks'; export class MrCliPerformance { constructor() { //this.markCreateStart(); } public markEntry = () => { performance.mark(this.l('create', 'start')); }; public markExit = () => { performance.mark(this.l('create', 'end')); }; // CreateCliProgramDefinition public markBeforeCreateCliProgramDefinition = () => { performance.mark('mr-cli:CreateCliProgramDefinition:start'); }; public markAfterCreateCliProgramDefinition = () => { performance.mark('mr-cli:CreateCliProgramDefinition:end'); }; // StartMrProgram public markBeforeStartMrProgram = () => { performance.mark('mr-cli:startMrProgram:start'); }; public markAfterStartMrProgram = () => { performance.mark('mr-cli:startMrProgram:end'); }; // StartMrProgram public markBeforePreParseGlobalOptions = () => { performance.mark('mr-preparse:start'); }; public markAfterPreParseGlobalOptions = () => { performance.mark('mr-preparse:end'); }; // RunCommand public markBeforeRunCommand = () => {}; public markAfterRunCommand = () => { // rt.renderReport('c:\\Temp', cliEnv.logger); }; public measure = () => { const dl = method => `mr-cli ${method}`; const l = this.l; const measure = method => performance.measure(dl(method), l(method, 'start'), l(method, 'end')); measure('load'); measure('initConfig'); measure('createdHook'); measure('create'); }; private l = (method: string, action: 'start' | 'end' = 'start') => { return `mr-cli.${method}.${action}`; }; }