2013-06-29 4 views
2

test.jsИнтерпретация вывода профиля node.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

Какая версия узла? Используя 0.8.2 (например), я использую вашу программу и получаю вывод, который я ожидаю, и ничего подобного тому, что я вижу в вашем сообщении. Мой вывод находится здесь: http://pastebin.com/embed_js.php?i=mztwZLfd – Joe

+0

@Joe, 0.8.2, который я только что построил на OSX. Weird. – MaiaVictor

ответ

2

nprof использует процессор клеща для формата v8.log отличается от того, у вас есть

Я, имеющий такую ​​же issue в node-tick (который в настоящее время совместим с узлом 0.8.2 AFAIK).

Возможные решения:

или вы можете попытаться восстановить 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