解释node.js分析器结果中的*和〜

时间:2019-03-16 01:42:57

标签: javascript node.js v8

我正在使用this article中的步骤使用v8探查器对Node.js程序进行概要分析,基本上是:

# run program with profiler, generating isolate-nnnnnnnnn-v8.log
node --prof myprogram.js
# process tick profiler file
node --prof-process isolate-nnnnnnnnn-v8.log > processed.txt

processed.txt中,有一节用于每种类型的代码(JS,C ++等)中的函数调用。对于JavaScript部分中列出的许多功能(例如someFunction),我看到了*someFunction~someFunction的条目:

 [JavaScript]:
   ticks  total  nonlib   name
    490    2.4%    2.5%  LazyCompile: *someFunction pathToFile.js
     80    0.4%    0.4%  LazyCompile: ~someFunction pathToFile.js

有人可以告诉我函数名称前面的*~(星号和波浪号)是什么意思吗?根据this page,{ {1}}可能意味着该功能已经过优化,但是我不确定,因为它是在不同的上下文中提到的。

1 个答案:

答案 0 :(得分:3)

正确。 *(星号)表示Turbofan已优化该功能。 ~(波浪号)表示它的一个假设是不正确的,它不得不对函数进行优化,或者它没有时间进行优化,或者函数非常冷(很少运行),因此没有尝试

在运行节点时,还可以使用--trace-opt--trace-deopt标志来查看背后的原因。