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.logfunction(没有真正的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是非常值得尝试的。