console.log/warn/error-本机、普通JavaScript更高性能的替代方案?

console.log/warn/error-本机、普通JavaScript更高性能的替代方案?,javascript,performance,console,firebug,console.log,Javascript,Performance,Console,Firebug,Console.log,我做了一些研究,发现大部分都是几岁的孩子。我是JS的新手,我正在逐渐积累我的知识 log()是一个非常有用的工具,但是我非常担心它通常性能差(或者作为一个基本的例子),以及坏名声 如果我需要在生产应用程序/网站中留下console.log()风格的错误消息,是否有一个更高性能的替代方案是vanilla JS(没有框架/库)所固有的 我最初的想法是将所有日志项推送到一个数组中,以后可以收集(如果需要的话),但是这似乎与Promise.all()配合不太好-我没有得到一个数组中的10项,而是得到一个

我做了一些研究,发现大部分都是几岁的孩子。我是JS的新手,我正在逐渐积累我的知识

log()是一个非常有用的工具,但是我非常担心它通常性能差(或者作为一个基本的例子),以及坏名声

如果我需要在生产应用程序/网站中留下console.log()风格的错误消息,是否有一个更高性能的替代方案是vanilla JS(没有框架/库)所固有的

我最初的想法是将所有日志项推送到一个数组中,以后可以收集(如果需要的话),但是这似乎与Promise.all()配合不太好-我没有得到一个数组中的10项,而是得到一个带有最后一个值的数组,或者10个单独的数组

是否有一个本地的或最推荐的替代方案(感谢这是开放的“意见”-我不知道如何用其他词!)

Ps-对缺少格式表示歉意。。。手机

。。。表现不佳

其中一个测试用例将调用空函数与调用
console.log
进行比较。JIT编译器可能会内联一个空函数,因此实际上您根本没有将任何代码与
console.log
进行比较。可以肯定的是,没有任何代码比这快得多

由于日志记录,我从未经历过任何(明显的)延迟,除非您在渲染循环中进行日志记录,或者经常执行任何操作

。。。坏名声

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

是否有一种更高性能的替代方案是vanilla JS固有的(没有框架/库)

日志记录直接写入执行JavaScript的引擎中,这意味着它可以访问许多您无法通过JS访问的内容,而且本地代码总是比编译的JavaScript快(或者同样快,但没有人能保证)

如果我需要在生产应用程序/网站中留下console.log()样式的错误消息

谁应该读这些日志?如果出现错误,是否要让客户端查看控制台

登录到生产环境中不应该记录调试过程中使用的所有内容,而应该记录到足以跟踪错误的内容,因此需要一些面包屑来找出错误发生的位置(例如“菜单打开”),以及错误本身


如果您不想自己编写生产日志,请查看

console。日志调用不会降低您的站点速度,除非它们被异常频繁地调用。一个聪明的编程方法是在需要之前不要担心性能。如果你一直在担心每个命令的微观性能,你会陷入细节的泥潭,并扼杀你的生产力。为了解决你的具体问题,你可以研究谷歌分析(google analytics)等指标收集服务,并向其发送相关数据,应该比控制台日志更有用,控制台日志要求您手动检查用户报告的每个问题。承诺所有,听起来您使用它是错误的或误解了异步调用。@irkeninvader-但频率有多高?我们说的是每秒100秒还是更多?我不会将它们附加到滚动事件(如某些事件)。我对我拥有的几个(调试时可能有30个左右,而且不是所有的都能运行)没有太大的顾虑,它们可以帮助我逐步完成函数测试和重构。回复:微观优化,我完全同意。我不是把这些作为“问题”来关注,而是作为一个学习点。我知道有很多框架方面的东西,但我最好先复习一下原生JS:)@epascarello-也许是这样,老实说,我还在学习“基础知识”。我现在更倾向于使用.then()'我所拥有的一些Promise.all(),因为我认为这将是一个更合适的工作流-但这是离题的!老实说,我不认为将消息存储在数组中有多大用处?
日志直接写入执行JavaScript的引擎,这意味着它可以访问许多您无法通过JS访问的内容,此外,本机代码总是比编译后的JavaScript快。
+1这一行谢谢Jonas-这实际上非常有帮助/有见地!)我试图对此进行研究(基于我的一次对话),但我发现的每一个示例都会将console.log与空函数进行比较,我确实认为这很奇怪,因为空函数没有任何作用!回复:“坏代表”-我指的是console.log。它似乎有一个非常糟糕的名字,根据我最近所看到/听到的一切,它几乎是令人讨厌的(几乎和eval一样糟糕!)。Re:访问日志-它本身并没有写任何“敏感”的东西,因此向客户/最终用户开放进行故障排除/诊断。听上去,坚持使用一些控制台。日志不会是一件坏事!我没有将它们附加到滚动事件或类似的东西上-我有一个纯粹用于调试/逐步指示灯的版本,以及一个去掉90%console.log的版本。@willstocks\u tech well客户端根本不应该访问敏感数据。。。我的意思是,这只是一种糟糕的用户体验,查看控制台是开发人员的工作,而不是用户的工作。“我最近听说”。。。谁说的?@jonas wilms不,他们没有,我也不会允许。这更多是为了表面级的调试。