Node.js console.log性能

时间:2011-07-28 02:43:06

标签: performance node.js console logging

如果您的Node.js代码中充满了console.log语句,您是否会引发性能问题?是否值得调试/生产切换这个开/关?我意识到日志记录对于一般情况来说很重要 - 但是我一般都很好奇控制台输出是否会受到性能影响?

在chrome中的客户端脚本中,如果控制台处于打开状态,它肯定会降低性能。

4 个答案:

答案 0 :(得分:18)

修改

  

console.log是同步的,它阻止了事件循环


我认为这是一种低悬的果实,当你禁用伐木时(如果不在关键部位严格使用),它几乎不会给你任何减速带。可能console.log是用纯C实现的。还有一些模块可以关闭生产中的日志记录,就像你可以使用socket.io一样:

答案 1 :(得分:12)

nodejs中的console.log调用是同步的(!)并阻止事件循环。我刚刚体验过,当我用pg执行(异步)sql查询记录结果时。仅记录20个项目及其(少数)属性会使本地计算机上的性能从3ms降低到300ms。

答案 2 :(得分:10)

console.log减慢了chrome的速度,因为它实际上是在每次调用时都与DOM连接。整个inspect element系统实际上只是大量的DOM元素。当您在浏览器中拨打console.log时,必须在每次通话时向console添加新元素。

通过右键单击console.log中的元素并点击console,您可以看到inspect element的真正HTML格式。实际上,这将开启一个新的console检查现有的console。 :d

如果你真的担心性能,你总是可以完全删除console.log功能(不是真的建议,因为它可能会让人感到困惑)。你基本上可以noop浏览器或服务器端的功能。不再console.log没有速度影响:D

console.log=function(){};

答案 3 :(得分:-4)

如上所述,console.log是异步且非阻塞的,因此除了函数调用的一个滴答之外,它不会太慢地减慢应用程序的速度。

但是在使用某些模块在生产中部署某些级别的日志而不是直接使用console.log时,这是一个好习惯。 @Alfred列出了几个好的。

Nodejs官方博客发表了一篇文章,建议使用JSON格式进行日志记录,在Service logging in JSON with Bunyan查看,Bunyan for nodejs真的值得尝试。