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上,可以使用
的输出中可靠地正确无误。在其他平台上,应该有等效的通用分析技术--prof
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