Will console.log reduce JavaScript execution performance?
Actually, console.log
is a lot slower than an empty function. Running this jsPerf test on my Chrome 38 gives stunning results:
- when the browser console is closed, calling
console.log
is about 10 000 times slower than calling an empty function, - and when the console is open, calling it is as much as 100 000 times slower.
Not that you'll notice the performance lag if you have a reasonable number of console.…
calls firing once (a hundred will take 2 ms on my install of Chrome – or 20 ms when the console is open). But if you log stuff to the console repeatedly – for instance, hooking it up through requestAnimationFrame
– it can make things janky.
Update:
In this test I've also checked out the idea of a custom “hidden log” for production – having a variable which holds log messages, available on demand. It turns out to be
- about 1 000 times faster than the native
console.log
, - and obviously 10 000 times faster if the user has his console open.
Will use of the debugging feature console.log reduce JavaScript execution performance? Will it affect the speed of script execution in production environments?
Of course, console.log()
will reduce your program's performance since it takes computational time.
Is there an approach to disable console logs in production environments from a single configuration location?
Put this code at the beginning of your script to override the standard console.log function to an empty function.
console.log = function () { };
If you are going to have this on a public site or something, anyone with little knowledge on using the developer tools can read your debug messages. Depending on what you are logging, this may not be a desirable behavior.
One of the best approaches is to wrap the console.log
in one of your methods, and where you can check for conditions and execute it. In a production build, you can avoid having these functions. This Stack Overflow question talks in details about how to do the same using the Closure compiler.
So, to answer your questions:
- Yes, it will reduce the speed,
though only negligibly. - But, don't use it as it's too easy for a person to read your logs.
- The answers to this question may give you hints on how to remove them from production.
const DEBUG = true / false
DEBUG && console.log('string')