Node.js console.log性能
如果您的Node.js代码散布在console.log语句中,您是否在招惹性能问题? 这是值得debugging/生产切换此开/关? 我意识到日志logging对于生产一般很重要 – 但是我通常好奇,如果控制台输出有性能打击?
在Chrome中的客户端脚本中,如果控制台处于打开状态,它肯定会降低性能。
编辑:
console.log是同步的,它阻塞了事件循环
我认为这是低挂的水果,当你禁用日志logging时(如果不是在关键部分严格使用的话),几乎不会给你任何的速度缓冲。 可能console.log是在纯C中实现的。还有一些模块可以closures生产日志,就像使用socket.io一样 :
console.log
减慢chrome,因为它实际上在每次调用时都与DOM接口。 整个inspect element
系统实际上只是大量的DOM元素。 在浏览器中调用console.log
时,必须在每次调用时向console
添加一个新元素。
您可以通过右键单击console
的元素并单击inspect element
来查看console.log
是如何实际上只是HTML。 这实际上会打开一个新的console
检查已经存在的console
。 :d
如果你真的担心性能问题,你可以随时移除console.log
function(没有真正的build议,因为它可能会令人困惑)。 你基本上可以在浏览器或服务器端noop
该function。 没有更多的console.log
没有更多的速度影响:D
console.log=function(){};
consolej中的console.log调用是同步的(!)并阻塞事件循环。 我刚刚经历过,当我从pg执行(asynchronous)sql查询logging结果。 只logging20个项目及其(less数)属性,将本地机器的性能从3ms降低到300ms。
如上所述, console.log
是asynchronous和非阻塞的,所以除了函数调用的一个滴答,它不会太慢你的应用程序。
但是直接使用某个模块在生产环境中部署某些级别的日志时,而不是直接使用console.log是个好习惯。 已经有几个好的@Alfred列出。
Nodejs官方博客发布了一篇文章,build议使用JSON格式进行日志logging, 在Bunyan的JSON服务日志中检查出它,而bunyan的nodejs是非常值得尝试的。