Me gustaría medir el tiempo en el navegador javascript.
Yo uso console.log(), console.debug() ...etc.
Pero el comportamiento de console.timeEnd() es similar a console.log(). Se escribe en la consola en caso de que el interruptor de "registro" esté activado en la consola JS del navegador. Necesito escribir tiempo en la consola solo si los mensajes de depuración se han activado en el navegador.
¿Es posible de alguna manera?
No hay nada incorporado que lo haga por usted, pero es muy fácil implementarlo usted mismo: mantenga un Map de etiquetas para las horas de inicio y use Date.now() o performance.now() para obtener las horas de inicio y finalización.
Muy aproximadamente:
const debugTimeMap = new Map(); const debugTime = label => { if (debugTimeMap.has(label)) { console.warn(`Timer '${label}' already exists`); } else { debugTimeMap.set(label, Date.now()); } }; const debugTimeEnd = label => { const start = debugTimeMap.get(label); if (start === undefined) { console.warn(`Invalid debugTime label "${label}"`); } else { debugTimeMap.delete(label); console.debug(`${label}: ${Date.now() - start} ms`); } }; const debugTimeMap = new Map(); const debugTime = label => { if (debugTimeMap.has(label)) { console.warn(`Timer '${label}' already exists`); } else { debugTimeMap.set(label, Date.now()); } }; const debugTimeEnd = label => { const start = debugTimeMap.get(label); if (start === undefined) { console.warn(`Invalid debugTime label "${label}"`); } else { debugTimeMap.delete(label); console.debug(`${label}: ${Date.now() - start} ms`); } }; debugTime("x"); setTimeout(() => { debugTimeEnd("x"); }, Math.floor(Math.random() * 1000)); (Look in the real console, and don't forget to turn on debug output in the console.)