如果您的Node.js代码中充满了console.log语句,您是否会引发性能问题?是否值得调试/生产切换这个开/关?我意识到日志记录对于一般情况来说很重要 - 但是我一般都很好奇控制台输出是否会受到性能影响?
在chrome中的客户端脚本中,如果控制台处于打开状态,它肯定会降低性能。
答案 0 :(得分:18)
修改强>
console.log是同步的,它阻止了事件循环
我认为这是一种低悬的果实,当你禁用伐木时(如果不在关键部位严格使用),它几乎不会给你任何减速带。可能console.log是用纯C实现的。还有一些模块可以关闭生产中的日志记录,就像你可以使用socket.io一样:
答案 1 :(得分:12)
答案 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真的值得尝试。