test.js
function test(){
for(var i=0; i<2000000000; ++i);
};
test();
用于分析它的命令:
node --prof test.js
nprof
输出:
line 249: unknown code state: undefined
line 252: unknown code state: undefined
line 253: unknown code state: undefined
line 256: unknown code state: undefined
line 258: unknown code state: undefined
line 259: unknown code state: undefined
line 260: unknown code state: undefined
line 261: unknown code state: undefined
line 262: unknown code state: undefined
line 263: unknown code state: undefined
line 264: unknown code state: undefined
line 265: unknown code state: undefined
line 266: unknown code state: undefined
(This repeats around 1000 times. I'm removing it from this paste...)
[Unknown]:
ticks total nonlib name
34 79.1%
[Shared libraries]:
ticks total nonlib name
8 18.6% 0.0% /usr/local/bin/node
1 2.3% 0.0% /usr/lib/system/libsystem_kernel.dylib
[JavaScript]:
ticks total nonlib name
[C++]:
ticks total nonlib name
[GC]:
ticks total nonlib name
0 0.0%
[Bottom up (heavy) profile]:
Note: percentage shows a share of a particular caller in the total
amount of its parent calls.
Callers occupying less than 2.0% are not shown.
ticks parent name
8 18.6% /usr/local/bin/node
1 2.3% /usr/lib/system/libsystem_kernel.dylib
我希望它能在[JavaScript]部分显示“测试”功能。为什么不存在?
答案 0 :(得分:2)
nprof使用tick处理程序获取与您拥有的不同的v8.log格式
我在issue中拥有相同的node-tick(目前与节点0.8.2 afylek兼容)。
可能的解决方案:
npm install profiler@1.2.0
)或者您可以尝试使用节点版本的脚本重建nprof:
git clone https://github.com/bnoordhuis/node-profile
git clone https://github.com/joyent/node
cd node
git checkout v0.8.7-release # can't see tag for 0.8.2
cp deps/v8/tools/*.js ../node-profile/tools/v8
cd ../node-profile
sh tools/build-nprof