console.log/warn/error - 原生、香草 JavaScript 更高效的选择?

console.log/warn/error - native, vanilla JavaScript more performant alternative?

我做了一些研究,我发现的大部分都是几年前的事了。我是JS新手,正在慢慢积累知识。

Console.log() 是一个非常有用的工具,但是我非常担心它的性能普遍不佳(https://jsperf.com/console-log1337/16 or https://jsperf.com/console-log1337/33 作为一个基本示例),而且声誉不佳。

如果我需要在产品中留下 console.log() 样式的错误消息 application/website,是否有更高效的原生 JS 替代方案(没有 frameworks/libraries )?

我最初的想法是将所有日志项放入一个数组中,稍后可以收集(如果需要)但是它似乎不能很好地与 Promise.all() 结合使用 - 而不是比如说,一个数组中有 10 个项目,我取而代之的是取回具有最后一个值的单个数组,或者取回 10 个单独的数组。

是否有本地或最推荐的替代方案(感谢这是对“意见”的开放 - 我不确定如何表达它!)?

Ps - 抱歉缺少格式......移动!

... poor performance

其中一个测试用例将调用空函数与调用 console.log 进行了比较。 JIT 编译器可能会内联一个空函数,因此您实际上是在比较 根本没有代码 console.log。当然根本没有代码更快。

我从未经历过因日志记录而导致的任何(明显的)延迟,除非您在渲染循环或任何执行得非常非常频繁的情况下进行日志记录。

... bad reputation

是认真的吗?在我看来,与其他语言相比,JS 有很好的调试方法(可能是因为 JS 有最好的错误 :))因为你可以查看嵌套结构 "live",你可以在断点处停止执行,你可以准备代码进行调试debugger; 语句,您可以转储整个内存、可视化 GC 行为、热函数等等。是的,所有这些功能都会降低性能,但是控制台的性能相当不错。

is there a more performant alternative that is native to vanilla JS (no frameworks/libraries)?

日志直接写入引擎执行JavaScript,这意味着它可以访问很多你无法通过JS访问的东西,而且本地代码总是比编译的更快JavaScript (或同样快,但没有人能保证)。

In the event I need to leave console.log() style error messages in a production application/website ...

谁应该阅读这些日志?是否要让您的客户在出现错误时查看控制台?

Production 中的日志记录不应记录您通过调试使用的所有内容,但足以让您可以跟踪错误,因此可以通过一些面包屑查​​找错误发生的位置(例如 "menu open")以及错误本身.

如果你不想自己写生产日志,看看sentry for JS