【问题标题】:Make `node --prof` wait a bit before recording anything?让 `node --prof` 在记录之前稍等片刻?
【发布时间】:2019-06-17 17:29:18
【问题描述】:

我有一个脚本,主要是网络事件的回调。回调很快完成。相比之下,脚本的初始化时间相对较长。我真的不在乎初始化需要多长时间,我只想优化事件回调。如果我运行node --prof,大部分结果来自初始化。

如何让 Node 在完成初始化之前不记录任何内容?换句话说,如何以编程方式启用和禁用分析?

【问题讨论】:

    标签: javascript node.js profiling


    【解决方案1】:

    node --prof 旨在从头开始分析整个应用程序。您可以尝试使用另一种分析器,例如 vTune 或内置于 webstorm 中的分析器。我会尝试的另一件事是debug。 Debug 可用于记录事件之间所花费的时间,我认为这就是你想要的。

    【讨论】:

      【解决方案2】:

      您始终可以将输出通过管道传输到 flamebearer 以获取火焰图。

      node --prof app.js
      node --prof-process --preprocess -j isolate*.log | npx flamebearer
      

      它不会阻止节点分析您的整个应用程序,但它可能会为您提供足够的信息来深入了解火焰图并忽略您不想看到的边缘周围的部分,例如应用程序引导程序.


      您也可以随时尝试在循环中执行您想要分析的代码,以便为它们提供更大的表示形式。或者将node --profbenchmark 结合使用。

      【讨论】:

      • 循环是一个有趣的想法,我会试试的。我尝试了火焰图,但它们没有详细说明。 IE。我可以放大调用堆栈的距离是有限的。也许我只是用错了
      • 嗯。可能是事件循环的东西最终在它自己的调用堆栈中,也许。我不认为您可以以一种可以执行just回调方法的方式修剪代码吗?每当我需要优化类似的东西时,我总是尝试尽可能孤立地运行这些方法。它会让分析变得更容易(也更容易测试,作为一个很好的副作用)。
      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多