安装
1 | # 克隆代码 |
使用
非侵入式
顾名思义,不需要在程序中加入任何代码,直接运行即可。
需要在CmakeList中加入相关的编译选项 -Wl,--no-as-needed,-lprofiler,--as-needed
。
1 | target_link_libraries(ncnn_test ncnn -Wl,--no-as-needed,-lprofiler,--as-needed) |
然后在命令行中使用CPUPROFILE
进行执行前的配置,同时执行需要分析的程序。
1 | CPUPROFILE=./ncnn_test.prof ./ncnn_test |
之后,即可生成当前程序的性能分析文件。
侵入式
需要在程序中加入相关的代码,然后运行程序。这种方式需要在每个需要分析的函数中加入相关的代码。但是CmakeList中仅需要加入-lprofiler
即可。
1 | target_link_libraries(ncnn_test ncnn -lprofiler) |
代码中的相关代码如下:
1 |
|
之后,执行程序即可得到性能分析文件。
性能分析
需要使用pprof进行文件信息解析
1 | pprof --text ./ncnn_test ncnn_test.prof |
其输出形式有--text
控制,还可以使用其他形式进行展示,如--pdf
生成pdf文件,--web
生成网页。
注意事项
当你的程序很短,或者运行速度很快时,使用--text
形式进行性能分析时,可能无法得到有效的性能分析信息。
只会得到如下信息
1 | Using local file ./ncnn_test. |
此时,可以通过设置CPUPROFILE_FREQUENCY
为更大的数值,来增加性能分析的频率。从而避免出现上述情况。
采样频率越高,性能分析的准确度越高。
1 | export CPUPROFILE_FREQUENCY=9999999 |
或者
1 | RECOMMEND |