Stop doing tracing work when tracing is disabled

This commit is contained in:
Andrew Casey 2020-10-26 17:27:44 -07:00
parent 90e944daba
commit e712d42e44

View file

@ -101,22 +101,27 @@ namespace ts.tracing {
* deprecate these operations. * deprecate these operations.
*/ */
export function begin(phase: Phase, name: string, args?: object) { export function begin(phase: Phase, name: string, args?: object) {
if (!traceFd) return;
writeEvent("B", phase, name, args); writeEvent("B", phase, name, args);
} }
export function end(phase: Phase, name: string, args?: object) { export function end(phase: Phase, name: string, args?: object) {
if (!traceFd) return;
writeEvent("E", phase, name, args); writeEvent("E", phase, name, args);
} }
export function instant(phase: Phase, name: string, args?: object) { export function instant(phase: Phase, name: string, args?: object) {
if (!traceFd) return;
writeEvent("I", phase, name, args, `"s":"g"`); writeEvent("I", phase, name, args, `"s":"g"`);
} }
// Used for "Complete" (ph:"X") events // Used for "Complete" (ph:"X") events
const completeEvents: { phase: Phase, name: string, args?: object, time: number }[] = []; const completeEvents: { phase: Phase, name: string, args?: object, time: number }[] = [];
export function push(phase: Phase, name: string, args?: object) { export function push(phase: Phase, name: string, args?: object) {
if (!traceFd) return;
completeEvents.push({ phase, name, args, time: 1000 * timestamp() }); completeEvents.push({ phase, name, args, time: 1000 * timestamp() });
} }
export function pop() { export function pop() {
if (!traceFd) return;
Debug.assert(completeEvents.length > 0); Debug.assert(completeEvents.length > 0);
const { phase, name, args, time } = completeEvents.pop()!; const { phase, name, args, time } = completeEvents.pop()!;
const dur = 1000 * timestamp() - time; const dur = 1000 * timestamp() - time;
@ -125,7 +130,7 @@ namespace ts.tracing {
function writeEvent(eventType: string, phase: Phase, name: string, args: object | undefined, extras?: string, function writeEvent(eventType: string, phase: Phase, name: string, args: object | undefined, extras?: string,
time: number = 1000 * timestamp()) { time: number = 1000 * timestamp()) {
if (!traceFd) return; Debug.assert(traceFd);
Debug.assert(fs); Debug.assert(fs);
performance.mark("beginTracing"); performance.mark("beginTracing");
fs.writeSync(traceFd, `,\n{"pid":1,"tid":1,"ph":"${eventType}","cat":"${phase}","ts":${time},"name":"${name}"`); fs.writeSync(traceFd, `,\n{"pid":1,"tid":1,"ph":"${eventType}","cat":"${phase}","ts":${time},"name":"${name}"`);