这是一个node自带性能分析工具 ,使用的方法就是,在启动的时候带上—prof 参数,如下:

    1. $ node --prof inde.js

    然后,使用ab工具开始压测,结束之后会生成isolate-[hash].log文件;

    开始分析

    1. $ node --prof-process [刚才生成的isolate log 文件] > profile.txt

    输出为profile.txt:

    1. Statistical profiling result from isolate-0x102884000-14025-v8.log, (296 ticks, 4 unaccounted, 0 excluded).
    2. [Shared libraries]:
    3. ticks total nonlib name
    4. 6 2.0% /usr/lib/system/libsystem_pthread.dylib
    5. 6 2.0% /usr/lib/system/libsystem_kernel.dylib
    6. 2 0.7% /usr/lib/system/libsystem_malloc.dylib
    7. 1 0.3% /usr/lib/system/libmacho.dylib
    8. 1 0.3% /usr/lib/system/libcorecrypto.dylib
    9. [JavaScript]:
    10. ticks total nonlib name
    11. ...
    12. [Summary]:
    13. ticks total nonlib name
    14. 0 0.0% 0.0% JavaScript
    15. 276 93.2% 98.6% C++
    16. 24 8.1% 8.6% GC
    17. 16 5.4% Shared libraries
    18. 4 1.4% Unaccounted
    19. [C++ entry points]:
    20. ticks cpp total name
    21. 142 63.1% 48.0% T __ZN2v88internal21Builtin_HandleApiCallEiPmPNS0_7IsolateE
    22. 82 36.4% 27.7% T __ZN2v88internal40Builtin_CallSitePrototypeGetPromiseIndexEiPmPNS0_7IsolateE
    23. 1 0.4% 0.3% T __ZN2v88internal36Builtin_CallSitePrototypeGetFileNameEiPmPNS0_7IsolateE
    24. ...

    从Summary和各个entry points中,我们可以进一步分析程序中到底哪一块占用了较多的CPU时间。不过这个有点难看。