[英]Profiling JavaScript Code on nodejs - Possible Approaches
我的目标是为nodejs开发一个Java脚本探查器。 要求如下:
我主要担心的是,我不应该修改源文件(.js文件)。
我已经在node js上看到了JavaScript代码的所有可用分析选项。 我面临的问题是,大多数问题都需要将配置文件特定的代码手动注入到我的源代码中。 这是一个例子
var profiler = new Profiler() //需要在我的.js文件中创建探查器
profiler.startProfiling()
//我的代码
profiler.endProfling()
由于大多数分析器都需要这种代码注入。 任何人都可以建议我其他任何分析方法(不需要修改源代码)。
目前,我正在使用节点js随附的v8功能来分析我的JavaScript代码。 例如
节点--prof MyTestApp.js
这个命令给我一个v8.log。 这是一个示例日志
所以这是我的疑问
感谢帮助
您可以使用Intel VTune Amplifier XE来分析JS代码。 简而言之,您将能够看到JS函数收集的样本以及这些样本如何通过JS源文件分发。 此外,VTune显示完整的调用堆栈信息,包括Java(JIT)框架和本机框架(本机代码,例如,系统库或从JS代码调用的本机库)。 无需在代码中注入任何内容,但是您应该重建Node.js(花费不到5分钟)。
如何在Node.js中启用VTune支持
通过仅添加3行来启用VTune支持
在\\ src \\ node.cc中添加2行
#include "v8-vtune.h" // located in \\deps\\v8\\src\\third_party\\vtune
\n\n
void Init(...){…V8 :: SetFlagsFromCommandLine(&v8_argc,const_cast(v8_argv),true); vTune :: InitializeVtuneForV8() ; }
在\\ node.gyp文件中添加1行以添加和构建VTune支持
'target_name': 'node', 'type': 'executable', 'dependencies': [ 'node_js2c#host', 'deps/v8/src/third_party/vtune/v8vtune.gyp:v8_vtune', ],
现在,您准备使用VTune剖析在Node.js中运行的JS代码
如何使用VTune剖析Node.js
VTune可以在这里下载。 首先尝试评估版。
我的小应用-test.js
<pre> <code> function say(word) {
console.log("Calculating ...");
var res = 0;
for (var i = 0; i < 20000; i++) {
for (var j = 0; j < 20000; j++) {
res = i * j / 2;
}
}
console.log("Done.");
console.log(word);
}
function execute(someFunction, value) {
someFunction(value);
}
execute(say, "Hello from Node.js!"); </code> </pre>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.