控制台.log会降低 JavaScript 执行性能吗?

2022-08-30 04:37:36

使用调试功能会降低 JavaScript 执行性能吗?它会影响生产环境中脚本执行的速度吗?console.log

是否有一种方法可以从单个配置位置禁用生产环境中的控制台日志?


答案 1

实际上,它比空函数慢得多。在我的Chrome 38上运行这个jsPerf测试会得到惊人的结果:console.log

  • 当浏览器控制台关闭时,调用比调用空函数慢约10 000倍console.log
  • 当控制台打开时,调用它的速度要慢100 000倍

并不是说,如果你有一次合理数量的调用,你会注意到性能滞后(在我安装Chrome时,一百个需要2毫秒 - 或者当控制台打开时需要20毫秒)。但是,如果您反复将内容记录到控制台上 - 例如,将其连接起来 - 它可能会使事情变得卡顿。console.…requestAnimationFrame

更新:

在此测试中我还检查了用于生产的自定义“隐藏日志”的想法 - 有一个保存日志消息的变量,可按需提供。原来是

  • 比本地人快1000倍,console.log
  • 显然,如果用户打开控制台,速度快10 000倍。

答案 2

如果您打算在公共站点或其他网站上使用它,那么任何对使用开发人员工具知之甚少的人都可以阅读您的调试消息。根据您记录的内容,这可能不是一个可取的行为。

最好的方法之一是将 包装在其中一个方法中,以及可以检查条件并执行它的位置。在生产版本中,可以避免使用这些函数。此堆栈溢出问题详细介绍了如何使用 Closure 编译器执行相同的操作。console.log

因此,要回答您的问题:

  1. 是的,它会降低速度,尽管可以忽略不计。
  2. 但是,不要使用它,因为一个人阅读您的日志太容易了。
  3. 这个问题的答案可能会给你一些关于如何从生产中删除它们的提示。