Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在node.js--prof output中,这个奇怪的名字是什么+;你在做什么?_Javascript_Node.js_Profiling_V8 - Fatal编程技术网

Javascript 在node.js--prof output中,这个奇怪的名字是什么+;你在做什么?

Javascript 在node.js--prof output中,这个奇怪的名字是什么+;你在做什么?,javascript,node.js,profiling,v8,Javascript,Node.js,Profiling,V8,我使用--prof,在node.js v12.12.0上运行一个经过大量修改的fork,同时它运行一个简短的合成基准测试。在“node--prof”进程的输出中,我看到63%的程序运行时是用C++完成的: [Summary]: ticks total nonlib name 1503 35.6% 35.9% JavaScript 2658 63.0% 63.4% C++ 119 2.8% 2.8% GC 30

我使用
--prof
,在node.js v12.12.0上运行一个经过大量修改的fork,同时它运行一个简短的合成基准测试。在“node--prof”进程的输出中,我看到63%的程序运行时是用C++完成的:

 [Summary]:
   ticks  total  nonlib   name
   1503   35.6%   35.9%  JavaScript
   2658   63.0%   63.4%  C++
    119    2.8%    2.8%  GC
     30    0.7%          Shared libraries
     29    0.7%          Unaccounted

特别是,有一个C++函数占整个运行时的59%:

 [C++]:
   ticks  total  nonlib   name
   2504   59.3%   59.8%  t __ZN4node9inspector8protocol11NodeRuntime14DispatcherImplD1Ev
     27    0.6%    0.6%  T node::native_module::NativeModuleEnv::CompileFunction(v8::FunctionCallbackInfo<v8::Value> const&)
     23    0.5%    0.5%  T _proc_set_dirty
     16    0.4%    0.4%  T __kernelrpc_vm_remap
      9    0.2%    0.2%  t __malloc_initialize
      9    0.2%    0.2%  T _thread_get_state
      8    0.2%    0.2%  T node::contextify::ContextifyContext::CompileFunction(v8::FunctionCallbackInfo<v8::Value> const&)
  ...
我想知道它是否真的是垃圾收集器,但使用
--trace gc
表明,gc占用的运行时间远远少于总运行时间的10%


<>我如何知道C++函数在做什么?< /p> < p>查找<代码> DeXiSeriPippl <代码>并不难:直接指向。但那可能不是你真正想要的

<>代码中有一个错误——Prof 系统有一段时间,C++的TICK会被归咎于错误的函数——看起来你可能正在运行。它已经发布了,但是修复程序还没有发布到节点版本中

作为一种解决方案,在Linux上,可以使用 Prf来配置C++代码[1 ],而仍然使用<代码> -PROF/<代码>为JavaScript;JavaScript标记以及C++/JavaScript发行版应该在

--prof
的输出中可靠地正确无误。在其他平台上,应该有等效的通用分析技术

[1] 有关详细信息,请阅读手册页。我通常会使用以下内容:

perf record -e cycles -F 10000 <executable and arguments>
perf report -M intel
性能记录-e周期-F 10000
性能报告-M英特尔

这非常有帮助,谢谢。我碰巧在macOS上,但看起来这也受到了影响,尽管提交描述的问题是“prof/linux tick processor”中的bug;列出的最重要的功能是
Builtins\u LoadIC\u Megamorphic
,仅占样本的6.75%。也许这是正确的,它比在单个C++功能中占用CPU的60 +%更有意义,但它并不能为主要性能的赢家提供任何明显的途径。
perf record -e cycles -F 10000 <executable and arguments>
perf report -M intel