6. 使用V8和node轻松profile分析nodejs应用程序
简介
我们使用nodejs写好了程序之后, 要是想对该程序进行性能分析的话,就需要用到profile工具了。
虽然有很多很方便和强大的第三方profile工具,但是我们这里主要讲解V8和node自带的profile,因为他们已经足够简单和强大了。使用他们基本上可以满足我们的日常分析需要。
下面就一起来看看吧。
使用V8的内置profiler工具
nodejs是运行在V8引擎上的,而V8引擎本身就提供了内置的profile工具,要想直接使用V8引擎,我需要下载V8源代码,然后进行build。一般来说我们有两种build V8的方法。
使用gm来build V8
gm是一个非常方便的all-in-one的脚本,可以用来生成build文件,触发build过程和运行测试用例。
一般来说,gm脚本的位置在:/path/to/v8/tools/dev/gm.py
我们可以为其创建一个alias,方便后面的使用:
alias gm=/path/to/v8/tools/dev/gm.py
build V8:
gm x64.release
build之后进行用例验证:
gm x64.release.check
是不是很简单?
手动build V8
手动build V8就比较麻烦了,我们也可以分为三步,1.生成build文件,2.触发build,3.运行测试用例
我们可以使用gn来为out/foo生成build文件:
gn args out/foo
上面的命令将会开启一个编辑窗口,用来输入gn的参数。
我们可以添加list来查看所有的参数描述:
gn args out/foo --list
当然我们也可以直接指定参数,来创建build文件:
gn gen out/foo --args='is_debug=false target_cpu="x64" v8_target_cpu="arm64" use_goma=true'
除了gn之外,我们还可以使用v8自带的v8gen来创建build文件:
alias v8gen=/path/to/v8/tools/dev/v8gen.py
v8gen -b 'V8 Linux64 - debug builder' -m client.v8 foo
创建好build文件之后,我们就可以进行编 译了。
build所有的V8:
ninja -C out/x64.release
只build d8:
ninja -C out/x64.release d8
最后我们运行测试,来验证是否构建成功:
tools/run-tests.py --outdir out/foo
//或者
tools/run-tests.py --gn
生成profile文件
build好V8之后,我们就可以使用其中的命令来生成profile文件了。
找到d8文件:
d8 --prof app.js