La guía paso a paso o código que hallarás en este artículo es la resolución más fácil y efectiva que hallamos a tus dudas o dilema.
Solución:
Realmente, console.log
es mucho más lento que una función vacía. Ejecutar esta prueba jsPerf en mi Chrome 38 da resultados sorprendentes:
- cuando la consola del navegador está cerrada, llamando
console.log
es aproximadamente 10 000 veces más lento que llamar a una función vacía, - y cuando la consola está abierta, llamarla es hasta 100 000 veces más lento.
No es que notará el retraso en el rendimiento si tiene una cantidad razonable de console.…
las llamadas se disparan una vez (cien tardarán 2 ms en mi instalación de Chrome, o 20 ms cuando la consola está abierta). Pero si registra cosas en la consola repetidamente, por ejemplo, conectándolo a través de requestAnimationFrame
– puede hacer las cosas janky.
Actualizar:
En esta prueba, también comprobé la idea de un “registro oculto” personalizado para producción, con una variable que contiene mensajes de registro, disponibles bajo demanda. resulta ser
- alrededor de 1 000 veces más rápido que el nativo
console.log
, - y obviamente 10 000 veces más rápido si el usuario tiene su consola abierta.
Si va a tener esto en un sitio público o algo así, cualquier persona con poco conocimiento sobre el uso de las herramientas de desarrollo puede leer sus mensajes de depuración. Dependiendo de lo que esté registrando, este puede no ser un comportamiento deseable.
Uno de los mejores enfoques es envolver el console.log
en uno de sus métodos, y donde puede verificar las condiciones y ejecutarlo. En una compilación de producción, puede evitar tener estas funciones. Esta pregunta de Stack Overflow habla en detalle sobre cómo hacer lo mismo usando el compilador Closure.
Entonces, para responder a sus preguntas:
- Sí, reducirá la velocidad,
aunque solo de manera insignificante. - Pero no lo use, ya que es demasiado fácil para una persona leer sus registros.
- Las respuestas a esta pregunta pueden darle pistas sobre cómo eliminarlos de la producción.
const DEBUG = true / false
DEBUG && console.log('string')
Si posees algún reparo y disposición de medrar nuestro artículo puedes añadir una explicación y con gusto lo estudiaremos.