【发布时间】:2019-06-17 17:29:18
【问题描述】:
我有一个脚本,主要是网络事件的回调。回调很快完成。相比之下,脚本的初始化时间相对较长。我真的不在乎初始化需要多长时间,我只想优化事件回调。如果我运行node --prof,大部分结果来自初始化。
如何让 Node 在完成初始化之前不记录任何内容?换句话说,如何以编程方式启用和禁用分析?
【问题讨论】:
标签: javascript node.js profiling
我有一个脚本,主要是网络事件的回调。回调很快完成。相比之下,脚本的初始化时间相对较长。我真的不在乎初始化需要多长时间,我只想优化事件回调。如果我运行node --prof,大部分结果来自初始化。
如何让 Node 在完成初始化之前不记录任何内容?换句话说,如何以编程方式启用和禁用分析?
【问题讨论】:
标签: javascript node.js profiling
node --prof 旨在从头开始分析整个应用程序。您可以尝试使用另一种分析器,例如 vTune 或内置于 webstorm 中的分析器。我会尝试的另一件事是debug。 Debug 可用于记录事件之间所花费的时间,我认为这就是你想要的。
【讨论】:
您始终可以将输出通过管道传输到 flamebearer 以获取火焰图。
node --prof app.js
node --prof-process --preprocess -j isolate*.log | npx flamebearer
它不会阻止节点分析您的整个应用程序,但它可能会为您提供足够的信息来深入了解火焰图并忽略您不想看到的边缘周围的部分,例如应用程序引导程序.
您也可以随时尝试在循环中执行您想要分析的代码,以便为它们提供更大的表示形式。或者将node --prof 与benchmark 结合使用。
【讨论】: